본문 바로가기

전체 글

(215)
백준 3020 개똥벌레 (Java) 1. 문제 링크 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 석순과 종유석이 있어서 down과 up으로 2종류로 나눴다. 석순인 경우와 종유석인 경우 각각 입력받은 값을 배열에 추가한다. 각각 높이에 연결되어 있는 부분을 더하기 위해 누적합을 이용했다. 각 높이별로 개수를 세고, 방해물이 가장 적은 곳(들)을 출력한다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.u..
백준 13549 숨바꼭질 3 (Java) 1. 문제 링크 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 BFS를 이용해서 풀었다. 시간이 0초 걸리는 *2 연산을 앞에 두고 +1, -1을 진행했다. 원래는 bfs로 풀리는 문제는 아닌데 *2 연산을 먼저 진행해서 풀린 것 같다. 약간 1의 위치에 있었을 때 *2를 먼저 해야 +1보다 먼저 방문하니까 시간이 덜 걸리기 때문에 무조건 *2를 앞에 둬야 한다. 4. 코드 import java.io.BufferedReader; imp..
백준 21611 마법사 상어와 블리자드 (Java) 1. 문제 링크 https://www.acmicpc.net/problem/21611 21611번: 마법사 상어와 블리자드 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그, 비바라기 마법을 할 수 있다. 오늘 새로 배운 마법은 블리자드이고, 크기가 N×N인 격자에서 연습하려고 한다. N은 항상 홀수이고, ( www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 칸의 번호를 적어두는 배열을 만들었지만 옮기는 부분에서 막혀서 번호별로 좌표를 넣었다. numbers는 칸 번호, map은 구슬 번호를 저장한 배열이다. 이후 M번의 마법을 진행한다. magic은 마법을 시전하는 함수 4-1. 반복문으로 중간의 상어 위치에서 해당 방향으로 거리만큼 가면서 구슬 번호를 0으로 바꾼다. mov..
백준 4949 균형잡힌 세상 (Java) 1. 문제 링크 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 균형잡힌 문자열인지 판단하는 것으로 Stack을 사용했다. 열린 괄호와 닫힌 괄호 각각에 대해 조건을 걸어서 균형이 맞지 않다면 끝이다. 끝까지 균형이 맞았을 경우에는 스택에 남은 것이 없는지 확인하여 결과를 출력했다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack..
백준 2310 어드벤처 게임 (Java) 1. 문제 링크 2310번: 어드벤처 게임 입력은 여러 개의 미로로 주어진다. 각 미로의 첫 줄에는 미로의 방 수를 나타내는 정수 n(1 ≤ n ≤ 1000)이 주어진다. 다음 n 줄에는 각 방의 정보가 주어진다. 각 방의 정보는 방의 내용물을 나타 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 Connect로 연결된 방을 이었고, Room으로 각 방의 정보를 표시했다. 1번방부터 BFS로 n번에 도착하게 했다. 문제의 테케가 꽤나 많이 부족하다. 소지금도 들고 다녀야 되는데 안 들고 다녔는데도 통과했다..왜? 코드는 일단 올리지만, 소지금도 재방문도 전부 고려하지 않았다는 점.. 언제 틀렸다고 바뀔지 모른다는 점... 4. 코드 import java.io.BufferedReade..
백준 2178 미로 탐색 (Java) 1. 문제 링크 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 bfs 탐색 방식으로 문제를 풀었다. 최소 칸을 구해야 하기 때문에 큐의 크기를 구해 한 번의 횟수에 갈 수 있는만큼만 큐에서 빼서 처리했다. 미로의 끝에 도달한다면 종료한다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Queue; import java.io.IOExcept..
백준 9019 DSLR (Java) 1. 문제 링크 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 입력받은 숫자를 큐에 넣고 bfs 탐색으로 진행한다. 큐에 들어간 숫자를 꺼내서 D, S, L, R 연산을 하고 각자 큐에 넣는다. 큐에 넣은 수는 최소 횟수를 위해 방문 표시를 합니다. 문자로 하기에는 0으로 시작할 경우가 애매해서 숫자로 풀었다. 나왔던 숫자는 방문 처리를 통해 다시 방문하지 않도록 한다. 4. 코드 import java.io.BufferedReader; import jav..
백준 11000 강의실 배정 (Java) 1. 문제 링크 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. 우선순위 큐를 이용해서 시작 시간 기준 정렬하고, 시작이 같은 경우에는 종료 기준으로 정렬했다. 2. 강의실에 배정 받은 수업을 통과 큐에 넣고 큐 안의 수업과 비교했다. 3. 통과 큐에 아무것도 없거나, 통과 큐 안의 것보다 시작 시간이 앞이라면 통과큐에 넣는다. (새로운 강의실) 4. 통과 큐 안의 것보다 시작 시간이 크거나 같은 경우에는 통과 큐 안의 것과 바꿔치기한다. (비교 대상을 지금 수업으로 바꿈) 4. 코드 import java.io...