Python 160

[Level.0] 옹알이(1)

문제 설명: 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항1 ≤ babbling의 길이 ≤ 1001 ≤ babbling[i]의 길이 ≤ 15babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.문자열은 알파벳 소문자로만 이루..

[Level.0] 정수를 나선형으로 배치하기

문제 설명: 양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항1 ≤ n ≤ 30문제 해결def solution(n): answer = [[0] * n for _ in range(n)] dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] x, y, direction = 0, 0, 0 for cnt in range(1, n**2 + 1): answer[x][y] = cnt nx, ny = x + dx[direction], y + dy[direction] if not (..

[Level.0] 평행

문제 설명: 점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요. 제한사항dots의 길이 = 4dots의 원소는 [x, y] 형태이며 x, y는 정수입니다.0 ≤ x, y ≤ 100서로 다른 두개 이상의 점이 겹치는 경우는 없습니다.두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요.임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않습니다.문제 해결def get_dots(dot1, dot2): retur..

[Level.0] 겹치는 선분의 길이

문제 설명: 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. 제한사항 lines의 길이 = 3lines의 원소의 길이 = 2모든 선분은 길이가 1 이상입니다.lines의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다.-100 ≤ a 문제 해결def solution(lines): dicti = {} for start, end in lines: for i in range(start, end): ..

[Level.0] 주사위 게임(3)

문제 설명: 1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다.네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다.세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)2 점을 얻습니다.주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다.어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다.네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다. ..

[Level.0] 안전지대

문제 설명: 다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요. 제한사항board는 n * n 배열입니다.1 ≤ n ≤ 100지뢰는 1로 표시되어 있습니다.board에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다.문제 해결def solution(board): row = len(board) col = len(board[0]) answer = [[..

[Level.0] 연속된 수의 합

문제 설명: 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요. 제한사항1 ≤ num ≤ 1000 ≤ total ≤ 1000num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.문제 해결def solution(num, total): start = (2*total//num - num+1)//2 return [start + i for i in range(num)] 주석: total = (num * (2 * start + num - 1)) / 2 == start = (2*tot..

[Level.0] 창고 정리

문제 설명: 선빈이는 게임을 즐기던 중 가지고 있는 물건이 너무 많아 창고 정리를 하기로 했습니다. 선빈이가 보유한 게임 속 창고는 여러 칸으로 나누어져 있고 각 칸에는 물건들이 담겨있습니다. 창고를 정리할 방법을 고민하던 선빈이는 같은 물건이 여러 칸에 나누어 들어있는 것을 발견하고 우선 같은 물건끼리 최대한 겹쳐쌓는 방식으로 창고를 정리하기로 했습니다. 선빈이의 창고에 들어있는 물건의 이름과 개수는 리스트 형태로 주어지며, 한 칸에 겹쳐질 수 있는 물건의 개수에는 제한이 없다고 가정합니다.예를 들어 창고의 각 칸에 담겨있는 물건의 이름이 storage = ["pencil", "pencil", "pencil", "book"], 각 물건의 개수가 num = [2, 4, 3, 1]이라면 연필과 책을 한 칸..

[Level.0] 다음에 올 숫자

문제 설명: 등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. 제한사항2 -1,000 common의 원소는 모두 정수입니다.등차수열 혹은 등비수열이 아닌 경우는 없습니다.등비수열인 경우 공비는 0이 아닌 정수입니다.문제 해결def solution(common): temp1 = common[1] - common[0] temp2 = common[2] - common[1] if temp1 == temp2: return common[-1] + temp1 else: return common[-1] * (common[1]//common[0])

[Level.0] 최빈값 구하기

문제 설명: 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다. 제한사항0 0 ≤ array의 원소 문제 해결from collections import Counterdef solution(array): counts = Counter(array) common = counts.most_common(2) if len(common) == 1: return common[0][0] elif common[0][1] == common[1][1]: return -1 else: retur..