본문 바로가기

CODING/BAEKJOON72

[BAEKJOON] 1120번 문자열 긴 문자열과 짧은 문자열의 차이만큼 반복하며 긴 문자열과 짧은 문자열을 비교한다. 짧은 문자열의 부족한 문자는 긴 문자열과 같다고 가정한다. 긴 문자열을 기준으로 짧은 문자열을 이동시키며 문자를 비교한다. 비교할 때 문자가 서로 다르다면 count 변수를 증가시켜 매 케이스마다 최소값을 가려낸다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedRea.. 2022. 2. 9.
[BAEKJOON] 11047번 동전 0 정해진 동전의 가치로 주어진 금액을 만들 수 있는 경우의 수 중 동전을 최소한으로 사용한 경우를 찾아야 한다. 주어진 금액과 동전의 가치가 같거나 작은 것으로 구성될 것이다. 동전의 가치가 높은 것부터 차례대로 주어진 금액과 비교한다. 현재 금액을 몇 개의 동전으로 만들 수 있는지 찾는다. 현재 금액을 동전의 가치로 나눈 몫이 동전의 개수일 것이다. 이때 동전의 개수는 반복문을 빠져나올 때까지 계속해서 누적시킨다. 다음 비교할 동전을 위해 현재 금액에서 이전 동전으로 만들 수 있는 금액을 빼준다. 가치가 낮은 동전을 사용할 때까지 반복하면 누적 동전 개수를 출력한다. import java.io.BufferedReader; import java.io.IOException; import java.io.Inp.. 2022. 2. 8.
[BAEKJOON] 1051번 숫자 정사각형 간단하게 생각해보면 이중 for 루프로 좌측 상단 꼭지점을 기준으로 정사각형이 만들어지는지 탐색한다. 하지만 탐색을 위해서는 좌측 상단 꼭지점을 기준으로 오른쪽으로 탐색하여 M-1 인덱스까지 같은 숫자가 있는지, 아래쪽으로 탐색하며 N-1 인덱스까지 같은 숫자가 있는지, 대각선 방향으로 같은 숫자가 있는지 탐색해야 하므로 3중 for 루프를 사용한다. 여기서 고려해야 할 점, 좌측 상단 꼭지점과 같은 거리에 있는 우측 상단 꼭지점, 좌측 하단 꼭지점과 우측 하단 꼭지점의 숫자가 같으면 정사각형을 이루므로 해당 정사각형의 넓이를 구한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; im.. 2022. 2. 8.
[BAEKJOON] 10610번 30 이 문제에 대해서 나도 그렇고 여러 사람들이 오해하고 있는 부분이 있었다. 나는 입력된 숫자를 조합하여 30의 배수 중 가장 큰 수를 찾아야 하는 것으로 이해했다. 하지만 문제 해결법은 간단했다. 입력된 수의 조합으로 가장 큰 수를 만들고, 그 수가 30의 배수이면 되는 것이다. 따라서 입력받은 수를 하나씩 쪼개어 역순으로 정렬하면 예를들어 102는 210이 될 것이다. 이 210이 30의 배수이면 210을 출력한다. 아니라면 -1 출력한다. 이 문제를 통해 30의 배수를 구하는 방법을 새로이 알게 되었다. 만약 123의 수가 3의 배수인지 판별하려면 각 자리 수를 더했을 때 3의 배수이면 되는 것이다. 1+2+3=6이므로 6은 3의 배수이다. 즉, 123은 3의 배수가 된다. 이 문제는 30의 배수를 .. 2022. 2. 7.
[BAEKJOON] 1475번 방 번호 입력받은 수를 한 문자씩 나누어 숫자와 상응하는 인덱스 번호의 위치의 값을 1씩 증가시킨다. 해당 숫자가 몇 개 나왔는지 누적시킨다. 6과 9는 하나의 숫자로 취급하면 간단하다. 0~8까지 저장할 수 있는 정수형 배열을 만든다. (9는 6에 함께 저장할 것이기 때문에 제외시킴) 배열 초기 모든 저장된 값은 0으로 초기화되어 있으므로 숫자 1이면 인덱스 1의 저장값을 1로 증가, 숫자 2이면 인덱스 2 저장값을 1로 증가시킨다. 배열 크기만큼 반복문을 돌려 누적값을 카운트한다. 누적된 값을 1씩 빼주면서 (6은 9와 함께 저장되기 때문에 2씩 빼줌) 배열에 저장된 모든 값이 0이하가 될 때까지 반복한다. 즉, 반복문 한 번이 플라스틱 한 세트가 된다. import java.io.BufferedReader;.. 2022. 2. 6.
[BAEKJOON] 1436번 영화감독 숌 해당 문제는 부르트포스 알고리즘 문제로 분류되어있다. 초기 숫자 666부터 시작하여 1씩 증가시키면서 6이 연속으로 세 개 즉, '666'이 포함된 숫자를 발견한다면 N+1번째 영화의 제목으로 간주한다. 그렇게 입력 받은 숫자만큼 영화 제목이 만들어지면 반목문을 중단하여 출력한다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws NumberFormatExc.. 2022. 2. 5.