목록BOJ (7)
소소한 개발이야기
💡 [BOJ #11945번 JAVA] (뜨거운 붕어빵) 문제 풀이 🔗 [소스 코드] 단순 swap 문제 입니다. 붕어빵 모양이 2차원 배열로 주어지는데 각 행을 역순으로 바꿔주기만 하면 되는 문제 입니다. 문자열 역순으로 출력 등의 문제와 같은 문제라고 볼 수 있습니다. 여기서 확인해야 할 점은 각 행을 역순으로 바꿀 때 모든 index를 확인하는 것이 아닌 열(col)의 1/2만 확인하며 역순으로 변경할 수 있다는 점 입니다. 🌱 붕어빵의 모양을 입력받는 함수 public static void inputShapeOfBoong(int[][] shapeOfBoong, int n, int m) throws IOException{ for (int i = 0; i < n; i++) { String inputMa..
💡 [BOJ #6359] (만취한 상범) 문제 풀이 🔗 [소스 코드] 문제는 다이나믹 프로그래밍으로 분류되어 있지만 도저히.. 다이나믹으로는 생각이 나질 않아서 야매?로 풀었다. 먼저 모든 방의 문의 상태를 나타내는 boolean[] stateOfRoom을 정의한다. 각 index는 방의 번호이며 false일 경우 문이 열려 있다고 가정한다. 문제를 보면 각 방의 번호의 배수가 되는 방의 문을 열고 닫는 문제이므로 2중 for문을 돌며 방 문의 상태를 바꿔주면 되는 쉬운문제다. 여기서 굳이 if문으로 방의 상태를 확인 할 필요 없이 무조건 열려 있으면 닫고, 닫혀 있으면 연다 for (int i = 2; i
[BOJ #11052번] (카드 구매하기) 문제 풀이 🔗 [소스 코드] 다이나믹 프로그래밍 입니다. 많은 문제를 접해봐야지 쉽게 접근할 수 있을거 같습니다. 문제를 풀기전에는 쉬워 보였지만 시간이 너무 오래 걸렸네요. 문제를 풀면서 느낀건 Bottom-Up과 Top-Down 두 방식 모두 풀어봐야 한다는 점이었습니다. 문제에 접근하는 방식을 한 번 살펴봅시다. 문제에서 구하고자 하는 것은 카드를 구매하는데 최댓값을 구하는 문제입니다. 카드를 구매할 수 있는 방법은 카드 팩을 구매하는 것인데 i개의 카드가 들어있는 팩 ~ N개의 카드가 들어있는 팩로 구성되어 있습니다. 각 팩마다 value가 정해져 있는데 문제에서 원하는 것은 N개의 카드를 구매하는데 어떤 팩의 조합이 가장 큰 value값을 가지냐는 것입..
[백준 온라인 저지] #2884번 (알람 시계) 문제풀이 45분 전으로 시간을 맞춰야하는 문제. 45분 전으로 되돌렸을 때 `minute`가 음수인지 아닌지만 확인한다면 쉽게 해결 할 수 있는 문제이다. 여기서 주의해야 할 점은 `hour`가 음수가 되는 경우만 확인해서 전 날인 `23시`로 바꿔주기만 하면 쉽게 해결할 수 있다. 소스코드 12345678if (minute - 45
[백준 온라인 저지] #11718번 (그대로 출력하기) 문제풀이 입력 횟수가 주어지지 않으므로 그 부분만 주의해서 문제를 풀면 쉬운 출력문제이다.총 2가지의 입력 방법에 대한 풀이가 있다. 첫 번째, Scanner를 이용한다면 Scanner의 hasNext() 함수를 이용하여 다음 입력값이 있는지 확인하고 출력해주면 된다. 12345Scanner in = new Scanner(System.in); while (in.hasNext()) { System.out.println(in.nextLine());}Colored by Color Scriptercs 두 번째, BufferedReader를 이용한다면 null인지 확인만 해주면 된다. 1234567BufferedReader br = new BufferedRe..
[백준 온라인 저지] #2490번 (윷놀이) 문제풀이 윷의 앞면과 뒷면을 1과 0으로 표현을 한다. 가장 평범하게 접근할 수 있는 방법은 `입력된 윷의 합`을 구하는 것이다. 윷의 순서는 상관 없으므로 총 합을 기준으로 `도, 개, 걸, 윷, 모`를 확인하면 쉽게 풀 수 있다. 12345678910char[] result = {'윷', '걸', '개', '도', '모'}; String[] input = br.readLine().split(" ");int sum = 0; for (int index = 0; index
[백준 온라인 저지] #1100번 (하얀칸) 문제풀이 문자의 비교만 할 수 있고, 체스판의 크기가 8 x 8로 정해져있어 완전 탐색으로 쉽게 풀 수 있는 문제라고 생각이 든다. 입력은 8 x 8 고정이므로 char 배열 8 * 8을 준비해 입력을 받아 완전탐색으로 말이 놓아져 있는지(F인지) 확인하면 된다. 문제에서 요구하는 것은 '하얀 칸 위에 말이 놓아져 있는가' 라는 것인데 완전탐색을 하면서 '하얀 칸인지?' 와 '말이 놓여져 있는지?'를 확인하면 된다. 그럼 '하얀 칸'인지는 어떻게 확인하는 것이 좋을까? (0, 0)이 하얀칸이라고 했으므로 체스판을 머릿속으로 그려보면 규칙을 쉽게 찾을 수 있다. 흰 검 흰 검 흰 검 흰 검 검 흰 검 흰 검 흰 검 희 흰 검 흰 검 흰 검 흰 검 ... 체스판을..