CodingTest/완전 탐색(구현) 11

프로그래머스 (Level 2) - 모음 사전

1. 문제 설명 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U' 만을 사용하여 만들 수 있는 길이 5 이하의 모든 단어가 수록되어 있다. 사전에서 첫 번째 단어는 "A"이고 그다음은 "AA"이며, 마지막 단어는 "UUUUU"이다. 단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하라 2. 제한사항 word의 길이는 1 이상 5 이하이다. word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U' 으로만 이루어져 있다. 3. 입출력 예 word result "AAAAE" 6 "AAAE" 10 "I" 1563 "EIO" 1189 사전에서 첫 번째 단어는 A -> AA -> ... -> AAAAA -> AAAAE 이므로 6번째 단어이다. "..

프로그래머스 (Level 2) - 피로도

1. 문제 설명 일정 피로도를 사용해서 던전을 탐험할 수 있다. 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있다. "최소 필요 피로도"는 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도이다. "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타낸다. "최소 필요 피로도" 가 80, "소모 피로도"가 20인 던전을 탐험하려면 유저는 남은 피로도는 80 이상이어여 하며 탐험한 후에는 피로도 20이 소모된다. 유저의 현재 피로도 k, 각 던전별 "최소 필요 피로도", "소모 피로도"가 담긴 2차원 배열 dungeons가 매개변수 유조가 탐험할 수 있는 최대 던전수를 return해라. 2. 제한사항 k는 1 이상 5,000 이..

프로그래머스 (Level 2) - 최소직사각형

1. 문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 한다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) * 70(세로) 크기의 지갑으로 모두 넣을 수 있다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) * 50(세로) 크기의 지갑으로 넣을 수 있다. 이때의 지갑 크기는 4000(80*50)이다. 모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개 변수로 주어진다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return해라 2. 제한사항 sizes의 길이는 1 이상 10,000 이하이다. sizes의 원소는 ..

프로그래머스 (Level 2) - 카펫

1. 문제 설명 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색, 테두리 1줄은 갈색으로 칠해져 있는 카펫을 발견했다. 집으로 돌아와서 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만 전체 카펫의 크기는 기억하지 못했다. 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개 변수로 주어진다. 이때, 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return하라 2. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수이다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수이다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 길다. 3. 입출력 예 brown yellow return 10 2 [4,3] 8 1 [3,3] 2..

프로그래머스 (Level 2) - 소수 찾기

1. 문제 설명 한자리 숫자가 적힌 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려고 한다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어진다. 종이 조각으로 만들 수 있는 소수가 몇 개 인지 return 2. 제한사항 numbers는 길이 1 이상 7이하인 문자열 numbers는 0 ~ 9까지 숫자만으로 이루어져 있다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미 3. 입출력 예 numbers return "17" 3 "011" 2 [1,7] 으로는 소수 [7, 17, 71]를 만들 수 있다. [0,1,1]으로는 소수 [11, 101]를 만들 수 있다. 11과 011은 같은 숫자로 취급한다. 4. 풀이 접근 문자열로 입력 받았으므로 하나씩 숫자를 뜯어내..

프로그래머스 (Level 1) - 모의고사

1. 문제 설명 수포자는 모의고사에 수학 문제를 전부 찍으려 한다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어진다. 가장 많은 문제를 맞힌 사람이 누군인지 배열에 담아 return 2. 제한사항 시험은 최대 10,000 문제로 구성되어 있다. 문제의 정답은 1, 2, 3, 4, 5중 하나이다. 가장 높은 점수를 받은 사람이 ..

특정 문자열을 포함한 시각구하기

1. 문제 설명 2. 문제 조건 3. 문제 해결 아이디어 모든 시각의 경우를 하나씩 세야한다. 하루는 86,400초이므로 모든 경우의 수는 86,400가지이다. 1씩 시각을 증가시키면서 3이 하나라도 포함되어 있었는지를 확인한다. 4. 표준 답안 H = int(input()) count = 0 for hour in range(H+1): for minute in range(60): for seconds in range(60): if '3' in str(hour) + str(minute) + str(seconds): count += 1 print(count) 시, 분, 초를 문자열로 만들어서 붙이게 되면 연산이 안되고 하나의 문자열이 된다. 거기서 3이 포함되어있는지 확인하는 방식으로 접근했다.

상하좌우 여행가

1. 문제 설명 2. 문제 조건 3. 문제 해결 아이디어 요구사항대로 충실히 구현 시물레이션 유형으로 구현이 중요한 문제 4. 풀이 N = int(input()) position = list(map(str,input().split())) #현재 서 있는 위치 x, y = 1, 1 #동, 북, 서, 남 dx = [0, -1, 0 ,1] dy = [1, 0, -1, 0] for i in position: if((i == 'L') & (y-1 > 0)):#왼쪽으로 이동 x += dx[2] y += dy[2] if((i == 'R') & (y+1 0)):#위로 이동 x += dx[1] y += dy[1] if((i == 'D') & (x+1 n or ny > n: continue x, y = nx, ny pri..