문제 2210번: 숫자판 점프 111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다. www.acmicpc.net 문제 풀이 5x5 크기의 숫자판이 있을 때, 임의의 위치에서 부터 시작하여 인접해 있는 네 방향으로 다섯 번 이동하면서, 각 칸에 적혀있는 숫자를 차례로 붙이면 6자리의 수가 된다. 이때 서로 다른 여섯 자리의 수들의 개수를 구하는 문제이다. 답을 찾기 위해서는 각 그래프의 좌표마다 DFS를 통해, 방문가능한 경로를 탐색하고 6자리가 되면 숫자를 기록하면 쉽게 문제를 풀 수 있다. 코드 from sys import..
문제 3568번: iSharp 입력으로 주어진 변수 선언문을 문제의 조건에 맞게 변형한 뒤, 한 줄에 하나씩 출력한다. 변수형과 변수명 사이에는 공백이 하나 있어야 한다. 출력은 입력으로 주어진 변수 선언문에서 변수가 www.acmicpc.net 문제 풀이 한 줄로 여러 개의 변수를 선언한 것을 하나씩 분리하여 출력하는 문제이다. 예를 들어, 예제 입력 int& a*[]&, b, c*;의 경우에는 int&&[]* a; int& b; int&* c;와 같이 출력할 수 있다. 이를 위해 다음과 같은 로직을 통해 변수 하나씩 분류하면 된다. int&과 같이 공통된 타입을 분리한다. 각 변수마다 공통된 타입 + 역순으로 자신의 타입을 출력한다. []의 경우 역순으로 출력하지 않도록 주의하여야 한다. 처음 알파벳..
정렬 기준 선택 오름 차순 정렬 nums = [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]] sort(nums, key=lambda x: (x[0], x[1])) 정렬하고자 하는 기준이 여러 개인 경우 위와 같이 우선적으로 정렬할 기준을 선택하여 정렬할 수 있다. 반대로 `x: (x[1], x[0])`가 된다면 2번째 값을 기준으로 정렬을 하게 된다. 내림 차순 정렬 nums = [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]] sort(nums, key=lambda x: (-x[0], x[1])) 정렬하고자 하는 기준에 하나는 내림차순, 하나는 오름 차순으로 정렬하고자 한다면 위와 같이 `-`를 붙여주면 내림차순으로 정렬할 수 있다. 중복되는 값이 있..
문제 15662번: 톱니바퀴 (2) 총 8개의 톱니를 가지고 있는 톱니바퀴 T개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 문제 풀이 앞서 다룬 톱니바퀴 문제를 이해하고 있다면, 몇 가지 조건만 추가하면 해결할 수 있는 문제이다. 이전의 문제는 톱니바퀴의 개수가 4개로 고정되어 있었지만, 이 문제에서는 톱니바퀴의 수가 T로 입력으로 주어진다. 또한 출력은 K번 회전시킨 후 12시 방향이 S극인 톱니바퀴의 개수를 출력하는 것이다. 코드 from sys import stdin from collections import deque def move_gear(idx, cur_d..
문제 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 � www.acmicpc.net 문제 풀이 문제에는 4개의 톱니바퀴에 대한 상태가 N극인 경우 0, S극인 경우 1로 주어진다. 하나의 톱니바퀴를 회전할 때, 시계방향 또는 반시계 방향으로 회전할 수 있고 회전하고자 하는 톱니바퀴와 인접한 톱니바퀴는 극이 다른 경우 영향을 받게 된다. 이때, 회전한 톱니바퀴와는 반대 반향으로 회전하는 특징을 가지고 있다. 이를 고려하여 로직을 구현하면 쉽게 해결할 수 있는 문제이다. 하나의 톱니바퀴를 회전시키면 좌측, 우측에 연쇄적으로 작용한다. ..
문제 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 문제 풀이 초기에 6면이 0의 값을 가지는 주사위를 동, 서, 북, 남으로 지도를 탐색할 경우 현재 좌표의 지도 값이 0이 아니면 주사위 바닥에 값을 복사하고, 현재 좌표 지도 값이 0인 경우 주사위 바닥의 수를 지도에 복사한다. 이때 명령에 따라 주사위를 움직일 때, 주사위 윗면의 값을 출력하는 문제이다. 주사위는 동, 서, 북, 남 각 방향에 따라 그림과 같이 변화한다. 동, 서인 경우에는..
코로나, 졸업, 취준 삼박자가 겹치면서 여행을 가거나 제대로 된 휴식을 취하지 못하였다. 저번 주 금요일 면접을 보고, 기분도 너무 다운되고 마음을 비워내고자 무작정 제주도 여행길에 올랐다. 제주도는 교통량이 적고 운전하기 쉽다고는 하지만, 차를 운전해본지가 너무 오래되어 덜컥 차를 렌트하기보다는 스쿠터를 선택하였다. 스쿠터로 제주도를 여행할 경우에 장단점에 대해 알고, 혹시 나중에 다시 제주도에서 스쿠터를 렌트할 일을 위해 회고하고자 한다. 여행 경로 첫째 날 이호테우말등대 - 한담해안산책로 - 금능해수욕장 - 신창풍차해안도로 - 서귀포 - 올레시장 스쿠터를 렌트한 곳을 기준으로 사람들이 많이 가는 장소를 하나하나씩 들리면서, 서귀포로 이동하였다. 각각의 장소들은 20~30분 내외 거리라서, 잠시 운전..
문제 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제 풀이 NxN 지도가 주어지고 각각의 칸에 높이가 주어진다. 이 지도에서 지나갈 수 있는 길이 몇 개 인지 찾아 반환하는 문제이다. 여기서 길은 지도의 하나의 행 또는 열을 의미한다. 길을 지나갈 때 높이가 다른 경우 경사로를 설치하여 지나갈 수 있게 만들 수 있다. 단 경사로의 길이만큼 길이가 확보되지 않거나, 경사로를 설치할 수 없는 영역 또는 높이의 차가 2 이상이라면 설치할 수 없다. 예제 입력 1의 경우 위의 그림과 같이 3개의 길을 지나갈 수 있다. 나머지 경우들은 ..