solved.ac Class 3레벨에 속한 문제이다. 문제 주소: https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 문제 해석 그림에서 주어진 블럭의 합이 최대가 되는 수를 구하는 문제이다. 이때 블록은 회전이 가능하므로 해당 경우까지 생각해서 문제를 해결해 주어야 한다. 문제 풀이 모든 경우의 수를 구해주었다. 3가지 방향으로 나누어서 구해주었다. 먼저 누워있는 ㅁㅁㅁㅁ 형태의 도형의 최댓값 ㅁㅁㅁ ㅁㅁㅁ 다음과 같은 2 * 3 형태의 도형의 ..
금방 달성될 줄 알았던 플레티넘을 드디어 달성했다. 사실 종강하고 이주 정도 기간동안 달성하려 했지만, 귀찮음과 쉬고싶은 마음 때문인지 스트릭만 채웠던 것 같다. 자주 못봤던 동네 친구들도 만나느라 시간이 부족했다. (유학갔던 친구가 돌아오고, 유학을 가는 친구를 배웅하고..) 1월 1일부터 신경써서 문제를 풀었더니 금방 달성했던 것 같다. 알고보니 solved.ac 사이트의 class 레벨을 달성하게 되면 일정량의 경험치를 대량으로 주는 것을 뒤늦게 깨달았다. 하지만 내가 달성해야할 class 5에는 몰랐던 새로운 알고리즘을 알아야 풀 수 있는 문제들이 대부분이였다. 이번 알고리즘 전공 수업 이전에는 이러한 알고리즘 기법들을 배운다는 것에 두려움이 있었는데, 전공 수업을 계기로 그 두려움의 벽을 좀 깻..
https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 문제 해석 2048 게임 시스템을 구현해서 5번 이동할 때 최대가 되는 값을 구하는 문제 코드 1. 제출 n = int(input()) arr = [] for _ in range(n): arr.append(list(map(int, input().split()))) def turn(current_arr): size = len(current_arr) temp_arr = [..
https://www.acmicpc.net/problem/1967\ 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 문제 & 테스트 케이스 문제 해석 노드에서 노드까지 가장 먼 거리를 찾는 문제. 코드 1. 제출 from collections import deque n = int(input()) adj = [[] for _ in range(n + 1)] for _ in range(n - 1): a, b, c = map(int, input().split()) adj[a].append((b, ..
https://www.acmicpc.net/problem/14942 14942번: 개미 자연수 n이 주어진다. n은 방의 개수이다. (1 ≤ n ≤ 105) 다음 n개의 줄에는 차례대로 현재 각각의 개미가 보유하고 있는 에너지 값이 주어진다. i+1번째 줄에는 i번째 방에 있는 개미가 가진 에너 www.acmicpc.net 문제 & 테스트 케이스 문제 해석 각 노드에 개미가 한마리 존재하며, 에너지가 주어진다. 개미들은 최대한 최상단 (1번 노드)로 이동해야 한다. 간선에는 이동하는데 필요한 에너지가 주어진다. 개미들이 최대한 1번노드 (최상단)으로 이동할 때 멈추게 되는 위치를 출력하는 문제이다. 코드 from collections import deque input = __import__('sys')...
https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 문제 & 테스트 케이스 문제 해석 준규는 N개를 꼽을 수 있는 멀티탭에 전기용품을 꽃아 사용한다. K번 전기용품을 순서대로 사용할 때 전기용품의 플러그를 최소로 뽑는 횟수를 구하는 문제이다. 코드 n, k = map(int, input().split()) arr = [0] + list(map(int, input().split())) # 몇 번 이후에 도착하는지 체크하는 배열 visit = [[fl..
https://www.acmicpc.net/problem/17071 17071번: 숨바꼭질 5 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 500,000)에 있고, 동생은 점 K(0 ≤ K ≤ 500,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 문제 & 테스트 케이스 문제 해석 1. 수빈이와 동생의 좌표가 주어진다. 2. 수빈이는 동생의 좌표로 이동해야한다. 3. 수빈이의 이동 방법은 -1, +1, *2 총 3가지 이며 모두 1초가 소요된다. 4. 동생은 매초 1, 2, 3만큼 앞으로만 이동한다. 코드 from collections import deque n, k = map(int, input().s..
https://www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제 & 테스트 케이스 문제 해석 1. 수빈이와 동생의 좌표가 주어진다. 2. 수빈이는 동생의 좌표로 이동해야한다. 3. 수빈이의 이동 방법은 -1, +1, *2 총 3가지 이며 모두 1초가 소요된다. 4. 동생을 잡는 최소 시간과 경로를 구하는 문제. 코드 from collections import deque n, k = map(int, input().split..
https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 문제 & 테스트 케이스 문제 해석 1. 현재 이모티콘 복사 2. 복사된 클립보드의 이모티콘 붙여넣기 3. 현재 이모티콘 하나 삭제 이 3가지 기능을 통해 주어진 입력의 수의 이모티콘을 만드는 문제이다. 이때 클립보드의 이모티콘이 0개일 때 붙여넣을 수 없다. 코드 from collections import deque input = __import__('sys').stdin.readline targe..
https://www.acmicpc.net/problem/17425 17425번: 약수의 합 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net 문제 & 테스트 케이스 문제 해석 주어진 숫자 n까지의 약수의 합을 구하는 문제이다. 테스트 케이스처럼 2가 입력되었을때, 1의 약수는 [1], 2의 약수는 [1, 2]이다. 따라서 2까지의 수들의 모든 약수의 합은 4가 된다. 코드 input = __import__('sys').stdin.readline # 약수 구하기 divisor = [..