Jeongchul Kim
백준 삼성 코딩 기출 문제 - 테트로미노 python 출처 : BAEKJOON ONLINE JUDGE2048 (Easy) (https://www.acmicpc.net/problem/14500) 문제 설명문제는 흔히 우리가 알고 있는 테트리스의 모양을 이용해서 주어진 맵 NxM에 어느 위치에 있던 테트로미노 하나를 놓게 됩니다. 그러면 테트로미노 안에 놓여 있는 칸에 수들의 합을 최대로 구하는 프로그램을 구하는 것입니다.figure reference(https://www.acmicpc.net/problem/14500) 첫 번째 케이스를 예로 들면 다음과 같이 합의 최대값 19를 뽑을 수 있습니다. 모든 경우의 계산을 진행해야 합니다. 회전과 대칭에 따라 테트리스의 모양은 19개 입니다. 문제 풀이[1] 입..
백준 삼성 코딩 기출 문제 - 주사위 굴리기 python 출처 : BAEKJOON ONLINE JUDGE주사위 굴리기 (https://www.acmicpc.net/problem/14499) 문제 설명지도의 크기 NXM에서 오른쪽은 동쪽, 위쪽은 북쪽입니다. 주사위가 하나 주어지는데 모든 면에는 0이 적혀져 있습니다. 주사위가 놓여진 좌표가 (x, y)가 있습니다. 지도의 각 칸에는 정수가 쓰여져 있고, 주사위를 굴리면 돌아가는데 이동한 칸 수에 0이면 주사위 바닥면에 쓰여 있는 수가 복사됩니다. 0이 아닌 경우에는 칸에 쓰여 있는 수가 바닥면으로 복사되고, 칸에 쓰여 있는 수는 0으로 교체가 됩니다. 명령이 주어지는대 동쪽은 1, 서쪽은 2, 북쪽은 3, 남쪽은 4로 주어집니다. 복잡하게 생각하면 끝없이..
백준 삼성 코딩 기출 문제 - 시험 감독 python 출처 : BAEKJOON ONLINE JUDGE시험 감독(https://www.acmicpc.net/problem/13458) 문제 설명N개의 시험장이 있고, i번 시험장에 있는 응시자의 수의 A_i명이 있습니다. 총 감독관이 감시할 수 있는 응시자의 수 B명, 부감독관은 C명입니다. 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러명 있어도 됩니다. 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성합니다. 문제 풀이[1] 우선 입력값을 받아 들입니다. N = int(input()) # 시험장 개수 applicant = list(map(int, input().split())) # 시험장에 응시자의 수(리스트) B, C = map(int,..
백준 삼성 코딩 기출 문제 - 2048 (Easy) python 출처 : BAEKJOON ONLINE JUDGE2048 (Easy) (https://www.acmicpc.net/problem/12100) 문제 설명2048 게임은 4×4 크기의 보드에서 같은 값을 갖는 두 블록이 충돌하면 합쳐집니다.다음의 게임을 해보시면 이해가 갑니다ㅎㅎ 핸드폰 앱 게임으로도 많이 나와 있죠.https://play2048.co 여기서는 NxN크기의 보드가 주어집니다. 이미 합쳐진 블록은 다른 블록과 다시 합쳐지지 않습니다. 실제 게임에서는 이동을 할 때마다 블록이 추가되지만, 이 문제에서는 추가되지는 않고 주어진 보드에서 최대 5번을 이동할 경우 가장 큰 블록 값을 구합니다. 문제 풀이시뮬레이션을 해보는 문제입니다.[1]..
백준 삼성 코딩 기출 문제 - 구슬 탈출2 python 출처 : BAEKJOON ONLINE JUDGE구슬 탈출2 (https://www.acmicpc.net/problem/13460) 처음 보시는 분들은 다음의 링크에서 문제 풀이를 꼭 봐주세요!! 백준 삼성 코딩 기출 문제 - 구슬 탈출 python(https://jeongchul.tistory.com/665) 문제 설명이전 문제와 조건은 동일합니다. 보드의 상태가 주어졌을 때, 최소 몇 번 만에 빨간 구슬을 구멍을 통해 빼낼 수 있는지 구하는 프로그램을 작성해야 합니다. 문제 풀이이전에 구슬의 움직이는 시도한 횟수(depth)를 출력하면 풀이는 끝납니다.depth는 초기화를 1로 하였습니다. 처음의 움직임은 시도 1이니 1로 초기화해서 푸는게 쉽습니..
백준 삼성 코딩 기출 문제 - 구슬 탈출 python 출처 : BAEKJOON ONLINE JUDGE구슬 탈출(https://www.acmicpc.net/problem/13459) 문제 설명보드가 N X M 크기로 있고, 중력을 통해서 떨어지기 때문에 기울이는 것을 통해서 위/아래/오른쪽/왼쪽으로 움직임이 가능합니다. 빨간 구슬(R)을 구멍(O)으로 움직여야 하고, 단 파란 구슬(B)가 구멍(O)으로 들어가거나 또는 같이 들어가도 실패합니다. 움직이는 횟수는 총 10번 이하로 제한되고 가능하면 1, 실패하면 0을 출력합니다. 문제 풀이BFS(Breadth-First-Search) 알고리즘은 queue(FIFO -> deque사용)과 while(무한 루프)를 사용해 탐색을 구현합니다. DFS(Depth F..
python 부분합, 연속 부분수열 최대합부분합부분합은 배열의 시작부터 현재 위치까지의 원소의 합을 구해둔 배열(paritial_sum)입니다.다음의 표를 보면 partial_sum을 미리 계산하면 특정 구간의 합을 O(1)에 구할 수 있습니다. index012345scores[]10095801007065partial_sum[]100195275375445510 예를 들어 3번째부터 5번째의 합을 구하고 싶다하면 partial_sum[5] - partial_sum[3-1] = 510-275 = 235를 구할 수 있습니다.이 공식을 이용하면 구간합을 구할 수 있게 됩니다. def partial_sum(arr, a, b): arr = [0] + arr partial_sum = [0] * len(arr) for..
Python 구간 사이의 최소 제곱근 찾기 문제설명A, B의 두 개 정수 구간 사이에서Square Root의 최대 반복된 적용된 정수값을 반환하면 됩니다. A가 10, B가 20인 경우에 살펴보면 구간 사이에 10,11,12,13,14,15,16,17,18,19,20 값이 있습니다. 여기서 sqrt가 최대로 적용된 최소 제곱근 정수값을 찾아보면16은 16->4->2가 되므로, 함수는 2를 반환하면 됩니다. A가 3000, B가 6000인 경우를 보면 4096은 4096->64->8로 떨어지므로, 함수는 8을 반환하면 됩니다. A와 B는 2 ~ 1,000,000,000 사이의 값입니다. [1] math.sqrt를 쓰면 float형이 나온다. 이는 정수로 나눠 떨어지는 것을 확인해보기 위해서는int(math..