본문 바로가기

알고리즘 풀이/백준

(48)
[백준] 10026번: 적록색약 - JAVA 🔗 문제 링크 BOJ 10026번: 적록색약 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 📝 풀이 과정 반복문을 통해 순차적으로 접근하여 만약 방문하지 않은 점일때, 주변에 같은 색 영역이 존재하는 경우 방문처리를 해주면 되는 DFS, BFS 문제이다. 이번에는 DFS로 풀어보기로 했다. 이 문제에는 색약이 아닌 경우와 색약인 경우의 2가지의 탐색이 필요하다. 색약이 아닌 경우를 먼저 탐색하고 이후 색약인 경우를 탐색하기로 했다. 반복문을 돌며 해당 칸을 방문하지 않은 경우,dfs 메소드를 통해 해당..
[백준] 9461번: 파도반 수열 - JAVA 🔗 문제 링크 BOJ 9461번: 파도반 수열 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 📝 풀이 과정 처음 변의 길이가 1인 정삼각형을 기준으로 시계방향으로 정삼각형을 추가하는 수열이다. 한 변의 길이가 2일 때까지는 한 변에 붙는 경우와 두 변에 붙는 경우도 존재하지만, 한 변의 길이가 3 이상이 되면 두 변에 걸쳐 삼각형이 생기는 것을 알 수 있다. N = 6일 때, 1번째와 5번째 삼각형의 두 변의 걸쳐 생성되었고, N = 7일 때, 2번째와 6번째, N = 8일 때, 3번째와 7번째 삼각형의 변을 맞..
[백준] 9375번: 패션왕 신해빈 - JAVA 🔗 문제 링크 BOJ 9375번: 패션왕 신해빈 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 📝 풀이 과정 자료구조를 활용하여 경우의 수를 세는 문제이다. 만약 상의를 2개(상의1, 상의2), 바지를 1개(바지1) 가지고 있다면 (상의1) (상의2) (상의1, 바지1) (상의2, 바지1) (바지1) 총 5가지의 경우가 발생하게 된다. 이처럼, 상의를 입지 않거나 하나를 골라 입는 경우가 발생하게 된다. 때문에, 경..
[백준] 9205번: 맥주 마시면서 걸어가기 - JAVA 🔗 문제 링크 BOJ 9205번: 맥주 마시면서 걸어가기 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 📝 풀이 과정 집에서 페스티벌까지 가는데 바로 페스티벌까지 갈 수도 있고, 1군데의 편의점을 들릴 수도 있지만 100군데의 편의점 모두를 들릴 수도 있기 때문에 모두 탐색을 해야한다고 생각했다. n이 100이하이고, $n^3$을 해도 100만이기 때문에 플로이드 와샬 알고리즘을 통해 문제를 해결해보기로 했다. for (int i = 0; i
[백준] 9095번: 1, 2, 3 더하기 - JAVA 🔗 문제 링크 BOJ 9095번: 1, 2, 3 더하기 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 📝 풀이 과정 문제를 보고 1부터 차례대로 구할 수 있는 모든 경우를 쓰기 시작하였다. (1) 1 --- (2) 1 + 1 2 --- (3) 1 + 1 + 1 2 + 1 1 + 2 3 --- (4) 1 + 1 + 1 + 1 2 + 1 + 1 1 + 2 + 1 1 + 1 + 2 2 + 2 3 + 1 1 + 3 --- (5) 1 + 1 + 1 + 1 + 1 2 + 1 + 1 + 1 1 + 2 + 1 + 1 1 + 1 + 2 + 1 1 + 1 + 1 + 2 2 + 2 + 1 ... 쓰다보면서 일정한 패턴이 반복..
[백준] 9019번: DSLR - JAVA 🔗 문제 링크 BOJ 9019번: DSLR 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 📝 풀이 과정 숫자와 문자열을 동시에 저장해야 하기 때문에 Register class를 만들어주었다. class에서 D, S, L, R을 한 연산을 처리한 결과를 반환해주기로 하였다. D 연산의 경우 n을 2배한 뒤 값이 9999보다 크다면 %10000 값을 반환하라고 하지만 9999보다 작은 경우에는 %10000을 한다면 원래 값이 반환되므로 num * 2 % 10000을 반환한다. S 연산의 경우 n =..
[백준] 7662번: 이중 우선순위 큐 - JAVA 🔗 문제 링크 BOJ 7662번: 이중 우선순위 큐 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 1️⃣ PriotyQueue 📝 풀이 과정 큰 값과 작은 값으로 정렬해야 하기 때문에 고민하다 PriorityQueue를 두 개 사용하여 작은 값을 기준으로하는 minQueue와 큰 값을 기준으로 하는 maxQueue를 선언하였다. 기본적으로 PriorityQueue는 작은 값이 먼저 poll되기 때문에 maxQueue에는 Collections.reverseOrder()를 활용해 반대로 정렬하였다. 하지만,..
[백준] 7569번: 토마토 - JAVA 🔗 문제 링크 BOJ 7569번: 토마토 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 📝 풀이 과정 [백준] 7576번: 토마토에서 높이만 추가된 문제이다. 높이가 추가되었기 때문에 기존 4방향(앞, 뒤, 왼쪽, 오른쪽) 탐색에서 2방향(위, 아래)도 탐색해야한다. 이 문제에서 헷갈릴 수 있는 부분은 배열 선언 부분인데 기존 tomato[N][M]배열이 높이(H)개 만큼 존재하는 것이므로 tomato[H][N][M]이 되어야 한다! 💻 코드 import java.util.Linked..