문제 풀이
[백준] 16918번 - "봄버맨" (Java)
[백준] 16918번 - "봄버맨" (Java)
2022.01.03https://www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 난이도 : 실버 1 쉽게 헷갈릴 수 있는 구현 문제이지만, 코딩 테스트 용으로 많은 도움이 될 문제인 것 같습니다. 제가 주목한 문제의 조건은 1. "연쇄 반응은 없다" -> 현재 위치의 폭탄이 터질 때, 인접한 폭탄은 터지지 않는다. 2. "1초가 지난 후에 3초 전에 설치된 폭탄이 모두 폭발한다." -> 동시 폭발 3. "3과 4를 반복한다" -> 처음 1,2,3,4를 수행하고 3과 4만 반복된다. 문제에서 주..
[백준] 1913번 - "달팽이" (Java)
[백준] 1913번 - "달팽이" (Java)
2021.12.26https://www.acmicpc.net/problem/1913 1913번: 달팽이 N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 www.acmicpc.net 난이도 : 실버 5 코딩 테스트나 다른 구현 문제에서 한 번쯤 마주쳤을 법한 유형의 구현 문제입니다. 저는 주어진 문제 조건에 반대로 생각하여 문제를 해결하였습니다. 달팽이가 아래 그림과 같이 움직이는 것이 문제에서 주어진 조건입니다. 배열의 정가운데 요소부터 배열의 값을 채울 수 있고, 구현할 수 있지만 난이도가 높아지는듯한 느낌이 받았습니다. (마우스로 그려서 좀 삐뚤빼뚤할 수 있습니다.) 반대..
[백준] 15686번 - "치킨 배달" (Java)
[백준] 15686번 - "치킨 배달" (Java)
2021.09.22https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 난이도 : 골드5 삼성 역량 테스트 기출문제입니다. 완전탐색과 DFS로 해결할 수 있는 문제지만, 문제를 정확히 읽는 것이 중요할 것 같습니다. 도시의 치킨 거리가 모든 집의 치킨 거리인 줄 몰랐습니다. 괜한 곳에 시간을 많이 썼네요. 아래와 같은 로직으로 문제를 설계했습니다. 1. 치킨집과 집을 저장할 자료 구조를 만든다. 2. 치킨집을 완전 탐색한다. (DFS, 백트래킹)..
[백준] 11404번 - "플로이드" (Java)
[백준] 11404번 - "플로이드" (Java)
2021.09.19https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 난이도 : 골드 4 플로이드-와샬 기본 문제입니다. 주의 사항은 INF를 Integer.MAX_VALUE로 설정하면 안 됩니다. 상황에 따라 오버플로우가 발생할 수 있기 때문입니다. INF는 간선 가중치의 최댓값 * 정점 개수 -1 보다 큰 값을 사용하면 됩니다. - static int map [][]; 각 정점들 사이의 최소 비용을 저장할 이중 배열입니다. - static final int IN..
[프로그래머스] 위클리 챌린지(7주차) - "입실 퇴실" (Java)
[프로그래머스] 위클리 챌린지(7주차) - "입실 퇴실" (Java)
2021.09.18https://programmers.co.kr/learn/courses/30/lessons/86048 코딩테스트 연습 - 7주차 사회적 거리두기를 위해 회의실에 출입할 때 명부에 이름을 적어야 합니다. 입실과 퇴실이 동시에 이뤄지는 경우는 없으며, 입실 시각과 퇴실 시각은 따로 기록하지 않습니다. 오늘 회의실에는 programmers.co.kr 난이도 : Level 2 이 문제는 적절한 자료구조를 이용하고, 문제를 정확히 이해하는 것이 핵심이라고 생각합니다. 개인적인 생각이지만 이러한 문제는 문제에서 의도하는 풀이가 있는 것 같습니다. 다음과 같은 로직으로 문제를 설계했습니다. 1. 자료구조를 이용하여 각 사람마다 만난 사람의 수를 저장한다. 2. 나간 순서를 기준으로 반복문을 탐색한다. 3. 자료구조를..
[프로그래머스] 위클리 챌린지(6주차) - "복서 정렬하기" (Java)
[프로그래머스] 위클리 챌린지(6주차) - "복서 정렬하기" (Java)
2021.09.17https://programmers.co.kr/learn/courses/30/lessons/85002 코딩테스트 연습 - 6주차_복서 정렬하기 복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요 programmers.co.kr 난이도 : Level 1 오름차순, 내림차순과 같은 단순한 정렬이 아닌 직접 정렬을 커스텀하여 해결하는 유형의 문제입니다. 몇 가지 예외처리에 조금 애를 먹었지만 높은 난이도를 요구하는 문제는 아닙니다. 저는 아래와 같은 로직으로 문제를 해결하였습니다. 1. 선수의 정보를 저장할 객체를 생성한다. 2. 문제의 조건에..
[프로그래머스] 위클리 챌린지(5주차) - "모음 사전" (Java)
[프로그래머스] 위클리 챌린지(5주차) - "모음 사전" (Java)
2021.09.15https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 5주차_모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 난이도 : Level 2 규칙을 찾는 것이 관건인 문제입니다. 아래 순서대로 로직을 짰습니다. 1. 규칙을 구한다. 2. 점화식을 구한다. 1. 규칙을 구한다. 주어진 문제의 규칙대로 문자열을 순서대로 작성하면 아래와 같은 순서가 됩니다. A(1) - AA(2) - AAA(3) - AAAA(4) - AAAAA..
[프로그래머스] 위클리 챌린지(4주차) - "직업군 추천하기" (Java)
[프로그래머스] 위클리 챌린지(4주차) - "직업군 추천하기" (Java)
2021.09.13https://programmers.co.kr/learn/courses/30/lessons/84325 코딩테스트 연습 - 4주차_직업군 추천하기 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부 programmers.co.kr 난이도 : Level 1 각 직업군에 맞는 점수를 계산하고 사전순 정렬에 고민할 순 있지만, 크게 난이도가 높은 문제는 아니라고 생각합니다. 저는 다음과 같은 로직으로 문제를 해결하고자 했습니다. 1. Map 자료구조를 활용하여 언어별 점수 저장. 2. Comparator를 이용하여 사전순 정렬. 3. table 배열을 돌면서 직업군 별 총점 계..
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT - "자물쇠와 열쇠" (Java)
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT - "자물쇠와 열쇠" (Java)
2021.09.10https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 난이도 : Level 3 순수 구현력을 시험하는 문제라고 생각합니다. 문제를 확실하게 이해하는 것이 중요해보입니다. 저 같은 경우는 lock과 key가 돌기가 만나는 경우 (둘 다 1인경우)를 처리를 안해줘서 꽤나 시간을 썼습니다. 저는 다음과 같은 로직으로 문제를 풀고자 했습니다. 1. key 배열로 Lock 배열을 전탐색해야한다. 2. key 배열과 Lock 배열을 포함할 수 있는 새로운 배열을 만들어야한다..