파이썬(115)
-
백준 컨베이어 벨트 위의 로봇 코드 및 해설 (파이썬)
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 -
백준 1로 만들기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 나누고 빼는 대신 곱하고 더하는 것으로 바꿔 풀었다. N에서 1로 줄여나가는 것이 아니라, 1에서 N으로 늘려가는 것으로 방향을 반대로 보고 풀었다. 먼저 dp를 모두 N인 리스트로 초기화해주고, index 1의 값만 0으로 바꿔준다. 1부터 N-1까지 다음을 반복한다. 현재 i에서 3 곱한 것이 N 이하면, graph[i]+1의 값과 graph[i*3] 중 최솟값 취하기 현재 i에서 2 곱한 것이 N 이하면, graph[i]+1의 값과 graph[i*2] 중 최솟값 취하기 현재 i에서 1 더한 것이 N 이하면..
2021.10.28 -
프로그래머스 위클리 챌린지 피로도 코드 및 해설 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 12주차 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 시간제한 코테를 풀어보며 느낀 점... 그냥 생각 안 나면 약간 무식하게 느껴지더라도 모든 경우의 수를 고려해서 풀기 그래서 itertools의 permutations로 모든 가능한 순서를 구하고, 그에 따라 최대로 방문할 수 있는 던전의 수를 구했다. 그 중 최댓값을 반환하면 된다 더 좋은 방법이 있겠지?? from itertools import pe..
2021.10.26