목록알고리즘 (202)
여름의 서재
📕 문제 https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 💡 풀이법 1. 먼저 구름의 첫 위치의 좌표들을 clouds라는 deque에 담는다. 2. clouds를 돌면서 구름을 이동시킨 값을 다시 clouds에 넣는다. 이동시킨 자리에 위치한 칸의 물의 양을 1씩 증가 시켜준다. (이와 동시에 모두 0으로 채워진 N x N 의 격자 칸 is_clouds를 만들어서 구름이 있는 칸은 1로 바꿔준다. 3. 그 다음 다시 clouds를 돌면서..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/17680
📕 문제 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 💡 풀이법 1. dice의 각 6개 방향의 번호를 길이가 6인 리스트로 표현한다. (나는 0번 인덱스의 번호가 지도와 닿아있는 방향) 2. 동, 서, 남, 북으로 돌릴 때, 각 방향의 번호들을 바꿔준다. 3. 주사위를 놓는 곳이 0이라면 0번 인덱스의 숫자를 지도의 닿아있는 부분에 넣고, 반대로 0번 인덱스가 0이라면 지도..
📕 문제 https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 💡 풀이법 : 빨간 구슬을 구멍에서 빼낼 수 있는지 최소한의 동작 횟수를 구해야 하기 때문에 bfs를 이용했다. 1. 빨간 구슬과 파란 구슬이 두개 다 움직여야 하기 때문에 두개의 deque를 만든다. (이때, deque에 들어가는 원소는 (x의 좌표, y의 좌표, 현재까지의 동작 횟수) 이다.) 2. while문을 돌면서 구슬을 각자의 ..
📕 문제 https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 💡 풀이법 1. 학생을 키로 하고 학생이 선호하는 학생의 리스트를 value로 하는 like 딕셔너리를 만들었다. 2. 학생들을 위치시킬 N*N의 2차 행렬 room을 만들었다. 3. 각 학생마다 교실을 돌면서 각 자리의 행과 열, 주변의 좋아하는 사람 수, 빈 자리 수 를 구해서 priority리스트에 넣는다. 4. 모든 자리를 다 돌고 난 후 priority를 정렬해서 가장..
📕 문제 https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 💡 풀이법 : 문제를 이해하지 못해 한참을 해맸다..;; 이해하는데 시간이 더 걸린 문제ㅋㅋㅋㅋ 1. 컨베이어 벨트를 길이가 2N인 deque로 만들어주고, 칸마다 박스가 있는지 없는지를 체크하는 boxes 리스트도 deque로 만들어 준다. 이때, 박스는 컨베이어 벨트의 위에만 있을거기 때문에 아래칸은 무시하고 길이가 N인 리스트를 만들었다. 2. 이제 문제에 나온..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 💡 풀이법 1. 1부터 n^2까지 삼각형을 돌면서 숫자를 채워넣어야 한다. 2. 만약 n이 4라면 삼각형의 꼭대기에서 아래로 4번, 오른쪽으로 3번, 위로 2번, 아래로 1번 채워넣는다. 즉, 아래 n번 -> 오른쪽 n-1번 -> 위 n-2번 -> 아래 n-3번 -> 오른쪽 n-4번 -> .... ->1번 이런식으로 반복이 된다. 단, 위로 올라가는건 삼각형이..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 💡 풀이법 def solution(routes): answer = 1 routes.sort(key = lambda x:x[1]) camera = routes[0][1] for route in routes[1:]: if camera < route[0]: camera = route[1] answer += 1 return answer