파이썬 2

[ 백준 3190 ] 뱀 - Python

문제 보기 이 문제는 시뮬레이션 문제이다. 삼성 기출문제는 대부분 bfs로 풀거나 지도에서 움직이는 형태가 많은 것 같다. 이 문제 또한 지도에서 움직이는 형태이다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. - 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. - 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. - 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다. 문제에서 요구하는 사항을 하나씩 완성시키면 쉽게 구현할 수 있다. 알고리즘 수행 과정은 아래와 같다. 1. 2차원 배열(N x N)을 만든다. (0으로 초기화) 2. 사과의 위치에 1을 저장한다. 3. (0, 0)에서 뱀은..

[백준 1629] 1629] 곱셈 - Python

문제 보기 이 문제는 분할 정복 문제이다. A = 10, B = 11, C = 12라고 주어졌을 때 구해야 하는 정답은 10^11 % 12이다. 만약 10 * 10 * 10 * 10 ... * 10 % 12로 문제를 풀고자 했으면 시간 초과가 발생할 것이다. 시간 초과를 해결하기 위해서 곱셈의 개수를 줄이는 분할 정복이 필요하며 아래 과정을 중점적으로 구현하면 된다. 1. b의 값이 짝수인지 홀수인지 파악한다. 2. b의 값이 짝수라면 10 ^10 -> (10^5)^2 형태로 바꿔준다. 3. b의 값이 홀수라면 10 ^11 -> (10^5)^2 * 10 형태로 바꿔준다. 코드 def power(a, b): if b == 1: # b의 값이 1이면 a % C를 return한다. return a % C el..