자바 34

[백준] 24262번: 알고리즘 수업 - 알고리즘의 수행 시간 1 (JAVA)

문제: https://www.acmicpc.net/problem/24262문제 접근저는 바보라 처음에 문제를 이해하는 것이 어렵더라구요..?문제에 나와 있는 MenOfPassion 함수를 작성해야하는지 헷갈렸습니다. 알고보니 입력값을 MenOfPassion에 넣는다 생각하고 알고리즘의 수행 횟수와 시간복잡도(빅오표기법)의 최고차항 차수를 구하면 되는 것이었습니다. 따라서 이 문제를 풀기 위해서는 빅오 표기법에 대해서 알아야 합니다! 먼저, 빅오 표기법(Big-O Notation)이란 알고리즘의 시간 복잡도나 공간 복잡도를 표현할 때 사용되는 수학적 표기입니다. 즉, 입력 크기(n)가 커질 때 알고리즘의 실행 시간이나 메모리 사용량이 얼마나 증가하는지를 표현하는 방법입니다. 알고리즘의 정확한 실행 시간은 ..

[자바의 정석] CH10 날씨와 시간 & 형식화

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH10. 날짜와 시간 & 형식화형식화 클래스DecimalFormat숫자를 형식화 하는데 사용되는 클래스입니다. 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할 수 있으며, 반대로 일정한 형식의 텍스트 데이터를 숫자로 쉽게 변환하는 것도 가능합니다.SimpleDateFormat날짜 데이터를 원하는 형태로 출력할 수 있도록 도와주는 클래스입니다.ChoiceFormat특정 범위에 속하는 값을 문자열로 변환해주는 클래스입니다. 연속적 또는 불연속적인 범위의 값들이 처리하는 데 있어서 if문이나 switch문은 적절하지 못한 경우가 많습니다. 이럴 때 ChoiceFormat을 잘 사용하면 ..

[백준] 1764번: 듣보잡 (JAVA)

문제: https://www.acmicpc.net/problem/1764문제 접근처음 문제를 봤을 때는 List를 활용해서 하면 되겠구나! 라고 생각하고 다음과 같이 생각했습니다.사람의 이름을 담을 리스트(names)와 듣보잡을 담을 리스트(nm) 생성input값이 names에 없으면 names에 추가input값이 names에 이미 존재한다면 듣보잡으로 판단하여 nm에 추가nm 정렬한 후 출력근데 시간초과가 뜨더라구요..! ㅠ.ㅠ 그래서 사람의 이름을 담는 것을 리스트가 아닌, HashMap으로 구현하였습니다!HashMap은 조회할 때 일반적으로 O(1)의 시간복잡도를 갖기 때문에, 리스트보다 훨씬 빠릅니다.그래서 Key는 사람 이름으로 두고 Value는 입력된 됐는지 안됐는지만.. 확인하는 용도..로...

[백준] 9012번: 괄호 (JAVA)

문제: https://www.acmicpc.net/problem/9012문제 접근이러면 안되지만 알고리즘 분류가 자료구조, 문자열, 스택으로 되어 있어서.. 스택을 사용하여서 풀면 되겠구나 라고 생각했습니다 ㅎㅎ;; 먼저 스택이란 데이터를 하나씩 쌓아 올린 형태의 자료 구조로, 가장 나중에 들어온 데이터가 가장 먼저 나가는 후입선출(Last In Fisrt Out)을 구조입니다. 스택의 활용 예시로는 웹 브라우저 뒤로 가기, 문서 작업에서 ctrl+z 등이 있습니다. 그래서 이 문제에서는 다음과 같이 스택을 적용했습니다:문자가 '(' 이면 스택에 넣는다.문자가 ')' 이면 스택이 비어있는지 검사한다.만약 비어있으면 ')'를 스택에 넣고 break를 사용하여 for문을 빠져 나간다 (스택이 비어있으면, '..

[자바의 정석] CH09 java.lang패키지와 유용한 클래스 (1)

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH9. java.lang패키지와 유용한 클래스(1)java.lang패키지는 자바 프로그래밍에 가장 기본이 되는 클래스(String클래스, System클래스 등)들을 포함하고 있으며, 여기에 해당하는 클래스는 import문 없이도 사용할 수 있게 되어 있습니다.Object클래스Object클래스는 모든 클래스의 최고 조상이기 때문에 Object의 멤버들은 모든 클래스에서 바로 사용이 가능합니다.equals(Object obj)이 메서드는 매개변수로 객체의 참조변수를 받아 비교하는 역할을 합니다. 다음은 Object클래스에 작성된 equals메서드입니다.위의 코드에서 두 객체를 비교할 때는 참조변수의 값으..

[자바의 정석] CH08 예외처리

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH8. 예외처리프로그램이 실행 중 어떤 원인에 의해 오작동하거나 비정상적으로 종류되는 경우가 있는데, 이를 초래하는 원인을 프로그램 에러 또는 오류라고 합니다.에러는 발생시점에 따라 컴파일 에러와 런타임 에러로 나눌 수 있으며, 이 외에도 논리적 에러가 있습니다.컴파일 에러: 컴파일 시에 발생하는 에러런타임 에러: 실행 시에 발생하는 에러논리적 에러: 실행은 되지만, 의도와 다르게 동작하는 것소스코드를 컴파일 하면 컴파일러는 소스코드에 대해 오타나 잘못된 구문을 알려 줍니다. 컴파일러가 알려준 오류를 모두 수정하면 컴파일을 성공적으로 마치게 되어, 클래스 파일이 생성되며, 생성된 클래스 파일을 실행할..

[백준] 8958번: OX퀴즈 (JAVA)

문제: https://www.acmicpc.net/problem/8958문제 접근입력 받은 문자열에서 charAt() 을 통해 이전 문자랑 현재 문자를 비교해야겠다고 생각했습니다.그래서 저는 다음과 같이 조건을 나눠서 생각했습니다.이전 문자는 'X'인데, 현재 문자가 'O'인 경우이전 문자랑 현재 문자가 'O'인 경우나머지 경우 (즉, 현재 문자가 'X'인 경우)1번의 경우, 점수가 1이 됩니다. 연속 되는 'O'의 개수만큼 점수를 더 얻는데, 이 경우에는 'O'문자의 시작점? 이니까요!2번의 경우, 원래의 점수(score)에서 1을 더해져서 점수는 score + 1이 됩니다.3번의 경우, 현재 문자가 'X'이니 점수는 0이 됩니다. 그리고 점수를 다 더한 후, 출력하면 되겠죠?엄.. 제가 설명을 잘 못..

[백준] 1427번: 소트인사이드 (JAVA)

문제: https://www.acmicpc.net/problem/1427문제 접근문제를 보자마자(?) 리스트에 넣고 Collections.sort() 사용해야 겠다고 생각했습니다리스트 생성 (Character형이든, Integer형이든 상관없음)input값을 charAt()으로 하나씩 리스트에 넣음Collections.sort() 로 정렬전체 코드1) 리스트를 Integer로 생성한 경우import java.io.*;import java.util.*;public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamR..

[자바의 정석] CH07 객체지향 프로그래밍Ⅱ (2)

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH7. 객체지향 프로그래밍 Ⅱ (2)다형성(polymorphism)객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 부모 클래스 타입의 참조변수로 자식 클래스의 인스턴스를 참조할 수 있도록 하였다는 것입니다.class Animal { int age;}class Dog extends Animal { String name;}위와 같이 Animal클래스와 Dog클래스가 정의되어 있을 때, 두 클래스의 포함관계는 다음과 같습니다.두 클래스는 상속관계에 있으며, 두 클래스의 인스턴스를 생성하고 사용하기 위해 다음과 같이 나타낼 수 있습니다.Animal ani..

[백준] 1181번: 단어 정렬 (JAVA)

문제: https://www.acmicpc.net/problem/1181문제 접근문제에 나온대로 다음과 같이 생각했습니다:문자열을 담을 리스트를 생성한다. (만약 이미 list에 있는 단어면 넣지 않는다)문자열이 짧은 것부터 오름차순으로 정렬 (길이가 같으면 사전순으로 정렬)사실 처음에는 Map에 문자열과 문자열길이를 넣을까 했는데, 리스트로 선택했습니다. (이유는 정렬할 때 리스트가 더 쉬운 거 같아서 입니다.)리스트 생성하고 오름차순으로 정렬하는 것까지는 쉬웠는데... 문자열 비교하는 함수 equals 말고는 도저히 생각이 안 나더라구요 ㅎㅎ;; 그래서 바로 구글에 문자열 사전순 비교하는 법 찾아봐서 코드를 완성했습니다 ㅋㅋ..이번에 오답노트 느낌으로 정리하고 나중에 이 문제가 생각 안 날 때 한 번..