개발 블로그
article thumbnail
20529번. 가장 가까운 세 사람의 심리적 거리
Algorithm/백준 알고리즘 2023. 6. 30. 10:47

1. 아이디어 1. 브루트포스 방식으로 모든 케이스에 대해서 탐색하되 2. MBTI의 종류가 16가지라 입력값의 갯수가 32개를 초과하면 반드시 동일한 MBTI가 3개 이상 입력값에 존재하므로 3. N > 32 면 0을 N 32) { sb.append("0").append("\n"); continue; } int min = 12; for (int i = 0; i d) { min = d; } } } } sb.append(min).append("\n"); }..

article thumbnail
10799번. 쇠막대기
Algorithm/백준 알고리즘 2023. 4. 12. 10:23

아이디어 1. ")" 를 만났을 때 직전 값이 "(" 면 레이저를 그렇지 않으면 막대의 끝을 의미하게 된다. 2. "(" 를 만날 때마다 막대의 갯수를 카운팅하다가 ")" 를 만나면 1번 기준에 따라 레이저일 경우 현재 위치에 놓인 막대들[ 아직 ")" 쌍을 만나지 않은 "("]을 자르고 3. 그렇지 않으면 카운팅(레이저가 아닌 경우를 카운팅하면 원본 막대의 갯수를 알 수 있음)을 해서 정답에 더해준다 풀이 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String expr = sc.nextLine(); int answer =..

article thumbnail
2292번. 벌집

아이디어 입력값 N에 따른 최소 방 갯수 0 < N

article thumbnail
2903번. 중앙 이동 알고리즘

아이디어 1. 정사각형에 포함된 점은 a 개가 a 줄만큼 나열된 형태입니다. 즉 a 를 구하면 a x a 를 통해 정답을 구해낼 수 있습니다. 2. 한 줄에 포함된 점이 a 개인 정사각형에 대해 중앙이동 알고리즘을 적용하면 '가로' 기준 a 개인 정사각형 하나를 이어 붙인다고도 볼 수 있습니다. 3. 다만 이어 붙이는 과정에서 접합부의 점 1개가 겹치게 되므로 새롭게 만들어진 정사각형의 한 줄에 포함된 점은 2 x a - 1 개가 됩니다. 4. 따라서 초기값 a = 2 에서 시작하여 N 번만큼 2 x a - 1을 반복하고 마지막에 그 값을 제곱해주면 됩니다. 풀이코드 import java.util.Scanner; public class Main { public static void main(String[..

article thumbnail
2869번. 달팽이는 올라가고 싶다

아이디어 1. 낮에는 올라가고, 밤에는 미끄러지기 때문에 목표 지점에 도달하는 시점은 반드시 낮입니다. 2. N번째 낮까지의 이동거리 : (N-1)*(A-B) + A 3. (N-1)*(A-B) + A >= V 를 만족하는 자연수 N의 최소값을 구하면 그게 곧 정답입니다. 풀이 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); int V = sc.nextInt(); int n = (V-A)/(A-B); if ((V-A)%(A-B) == 0) { n++; ..

article thumbnail
2720번. 세탁소 사장 동혁

아이디어 1. 거스름돈의 종류를 보면 25, 10, 5, 1입니다. 2. 큰 수가 작은 수의 배수 조합(25 = 2*10 + 1*5), (10 = 5*2), (5 = 5*1) 으로 이루어졌기 때문에 그리디 알고리즘으로 문제를 해결할 수 있습니다. 풀이 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for (int i = 0; i < T; i++) { int C = sc.nextInt(); System.out.print(C / 25 + " "); C %=25; System.out.print..

article thumbnail
11005번. 진법 변환 2

2745번 문제 2745번. 진법 변환 진법에 대한 이해, 아스키코드에 대한 이해만 있다면 충분히 풀 수 있는 어렵지 않은 문제입니다. 아이디어 B진법으로 표현된 숫자를 10진법으로 변환하면 다음과 같습니다. a * B^4 + b * B^3 + c * B^2 w-hand.tistory.com 위 문제와 마찬가지로 진법 변환에 대한 이해, 아스키 코드에 대한 이해가 있다면 쉽게 풀 수 있습니다. 아이디어 1. 10진법으로 표현된 수를 B진법으로 표현하고 싶다면 B로 나누면서 나머지들을 모으면 됩니다. 8을 2진법으로 나타내기 8 % 2 = 0, 8 / 2 = 4 4 % 2 = 0, 4 / 2 = 2 2 % 2 = 0, 2 / 2 = 1 1 % 2 = 1, 1 / 2 = 0 몫이 0이 된 순간 나누기를 멈추..

article thumbnail
2745번. 진법 변환

진법에 대한 이해, 아스키코드에 대한 이해만 있다면 충분히 풀 수 있는 어렵지 않은 문제입니다. 아이디어 B진법으로 표현된 숫자를 10진법으로 변환하면 다음과 같습니다. a * B^4 + b * B^3 + c * B^2 + d * B^1 + e = B * (a * B^3 + b * B^2 + c * B^1 + d) + e a * B^3 + b * B^2 + c * B^1 + d = B * (a * B^2 + b * B^1 + c) + d a * B^2 + b * B^1 + c = B * (a * B^1 + b) + c a * B^1 + b = B * (a) + b a = B * 0 + a 이전의 결과에 B를 곱하고 자기 자신을 더하는 과정을 반복하면 원하는 결과를 얻을 수 있습니다. 2. 'A' 부터 '..