코딩테스트(89)
-
백준 계단 오르기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 다이나믹 프로그래밍 문제.. 점화식 세우는 게 너무 어렵다 dp[i] = max(dp[i-2]+scores[i], dp[i-3]+scores[i-1]+scores[i]) 이게 아니라 dp[i] = max(dp[i-2]+scores[i], dp[i-3]+scores[i-1]+scores[i], dp[i-1]) 가 아닌가?! 하는 오해가 있었는데 (불리하면 현재 계단을 밟지 말아야 한다고 생각해서) 한 번에 2개..
2021.11.11 -
백준 포도주 시식 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 다이나믹 프로그래밍 문제다. 연속적으로 3잔의 포도주를 먹을 수 없다는 제한이 있다. i번째 포도주에 해당하는 dp값은 i번째 포도주를 마시는 경우와 마시지 않는 경우로 나눌 수 있는데 (1) i번째 포도주를 마시는 경우 (1.1) i-1번째와 i번째 포도주를 마시는 경우: i-2번째는 먹지 못하니까 dp[i-3] + wine[i-1] + wine[i] (1.2) i-1번째 포도주는 마시지 않고 i..
2021.11.09 -
백준 컨베이어 벨트 위의 로봇 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 각 칸의 내구도를 belt, 로봇이 있는 칸의 인덱스를 robots에 저장한다. 1-4 각 과정을 함수로 만들어 매 단계마다 반복한다. 먼저 컨베이어 벨트의 회전은 벨트와 그 위의 로봇이 이동해야 한다. 벨트의 회전은 큐를 이용해 구현했고, 로봇의 이동은 인덱스를 하나씩 증가시키는 것으로 구현했다. 이때 마지막 인덱스에 로봇이 있는 경우 +1이 아니라 처음 칸인 0으로 가야하..
2021.11.08 -
백준 미세먼지 안녕! 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 미세먼지의 양과 그 위치를 확인하는 함수, 미세먼지의 확산을 구현하는 함수, 공기청정기의 윗부분과 아랫부분의 확산을 구현하는 함수를 만들어 매 초마다 이 함수들을 실행해주었습니다. 미세먼지의 양과 위치를 확인하는 함수는 전체 방의 원소를 확인하면서 원소가 0보다 크면 위치와 양을 튜플로 저장했습니다. (행, 열, 미세먼지 양) 미세먼지의 확산을 구현하기 위해서 상하좌우가 방 안에 있고, 공기청정..
2021.11.03 -
백준 색종이 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/2563 2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 100*100 크기의 0으로 이루어진 행렬을 만들고 이를 도화지로 생각했습니다. 사각형 입력이 주어질 때마다 그 부분을 1로 채워줬고, 0에서 1로 바뀌는 순간 count를 하나씩 증가해줬습니다. 최종 count를 답으로 프린트했습니다. import sys def fill_square(square, board, answer): x,y = square # 사각형의 범위 for i in range(x, x+10..
2021.11.03 -
프로그래머스 모음사전 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr 재귀함수를 활용해 풀이했습니다. 주어진 스트링의 직전 스트링의 형태를 파악하고 여기에 +1 하는 식으로 풀이했습니다. 예를 들어 EIO의 직전 스트링은 EIIUU이므로, EIIUU의 순서에 1을 더한 것을 최종 답으로 반환하는 식입니다. 이를 위해 마지막 문자가 A가 아닌 경우는 그 문자의 전 문자(ex. E의 전 ..
2021.11.03