Loading...

프로그래밍으로 뱀을 만드는 방법? -뱀-

1. 문제 3190번: 뱀 (acmicpc.net) 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 규칙에 따라 움직이는 뱀의 이동경로가 주어질때, 언제 게임이 끝나는지 구하는 프로그램을 작성 2. 풀이 뱀이 이동할때, 먼저 머리를 다음 칸에 위치시키고 사과가 있으면 사과를 먹고 그대로 두거나 사과가 없으면 꼬리가 위치한 칸을 비우므로 deque를 이용해서 뱀의 자취를 표현할 수 있을 것 같다 꼬리를 비울때는 deque의 0번째 원소를 제거하고, 머리를 넣을때는 deque의 마지막 원소를 넣어주고 ----------..

2022. 11. 12. 15:54

주사위를 구현하는 방법 - 주사위 굴리기 -

1. 문제 14499번: 주사위 굴리기 (acmicpc.net) 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 지도 위에 주사위를 향하는 방향으로 반복적으로 굴리면서, 숫자를 주사위로 복사하거나 지도로 복사하는 명령을 반복적으로 수행할때, 각 명령마다 윗면에 쓰인 숫자를 출력하는 문제 2. 풀이 주사위를 굴릴때 생각해보면 위, 아래로 굴리냐, 아니면 오른쪽 왼쪽으로 굴리냐에 따라 사용하는 면이 정해져있다 위,아래로 굴리는 경우는 아래와 같고 오..

2022. 11. 8. 01:08

조금 더 어려운 시뮬레이션 연습하기 -미세먼지 안녕!-

1. 문제 17144번: 미세먼지 안녕! (acmicpc.net) 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 맵에 배치된 미세먼지가 조건에 따라 확산하고, 설치된 공기청정기가 미세먼지를 흡수할때, 일정시간이 지난 후 남아있는 미세먼지의 양을 구하는 문제 2. 풀이 역시 제시된 순서에 맞게 성실하게 시뮬레이션 구현하면 되겠다 역시 가장 기본은 미세먼지와 공기청정기의 위치를 찾아야겠지 r,c,t = map(int,stdin.readline().split()) maps = [list(map(int,stdin...

2022. 11. 7. 23:26

조금 더 어려운 다이나믹 프로그래밍 연습하기 -퇴사1,2-

1. 문제 14501번: 퇴사 (acmicpc.net) 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 15486번: 퇴사 2 (acmicpc.net) 15486번: 퇴사 2 첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000) www.acmicpc.net 주어진 일정표에 상담기간과 해당 상담을 완료하면 얻는 이익이 주어진다. N+1일에 퇴사할려고 할때, 그 전에 최대이익을 얻도록 상담을 끝내고 싶다. 가능한 최대이익을 구하는 프로그램을 작성해본다면..? 2. 풀이 예전에 푼 수영..

2022. 11. 7. 15:29

deque도 인덱스로 접근해서 원소 수정이 가능하다 -컨베이어 벨트 위의 로봇-

1. 문제 https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 컨베이어 벨트 위에 로봇을 올릴때, 로봇이 움직이면서 칸의 내구도가 점차 감소한다 몇단계가 지나야 컨베이어 벨트 작동이 멈추는지 구해보자 2. 풀이 문제를 먼저 잘 이해해야겠다 1번부터 2n번까지 있는데 1번이 "올리는 위치"이고 n번이 "내리는 위치"라고 한다 그러면서 마치 2n번으로 오면 1번으로 올라오고 n번으로 가면 n+1번으로 내려가는 듯한 인상을 주는데...

dictionary와 재귀를 이용한 다이나믹 프로그래밍 기본 테크닉 배우기1

1. 문제 https://www.acmicpc.net/problem/1351 1351번: 무한 수열 첫째 줄에 3개의 정수 N, P, Q가 주어진다. www.acmicpc.net 주어진 수열의 점화식에서 A[N]을 구하는 문제 2. 풀이 처음에 그냥 이게 문제?하면서 점화식 그대로 작성했는데 메모리 초과남.. from sys import stdin n,p,q = map(int,stdin.readline().split()) dp = [0]*(n+1) dp[0] = 1 for i in range(1,n+1): dp[i] = dp[i//p]+dp[i//q] print(dp[n]) n의 최대 범위는 $10^{12}$인데 메모리 제한은 128mb라서 그런 것 같다 근데 dp[n]을 구할려면, dp[n//p]와 d..