programmers.co.kr/learn/courses/30/lessons/42897 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr 첫번째 집을 터는 경우에 마지막 집은 인접한 경우이기 때문에 털 수 없고, 마찬가지로 마지막 집을 터는 경우 첫번째 집을 털 수 없기 때문에 두 경우로 나눠서 계산 def solution(money): answer = 0 length = len(money) dp = [0] * length # 첫번째 집을 털고, 마지막 집은 안 터는 경우 dp[0] = money[0] dp[1]..
programmers.co.kr/learn/courses/30/lessons/42579?language=python3 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr dic : 장르별 재생 횟수가 저장된 딕셔너리 -> {'classic': 1450, 'pop': 3100} -> 정렬 후 [('pop', 3100), ('classic', 1450)] album : 장르별 노래의 재생된 횟수와 고유번호가 저장된 딕셔너리 -> {'classic': [[500, 0], [150, 2], [800, 3]], 'pop..
programmers.co.kr/learn/courses/30/lessons/42862# 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr def solution(n, lost, reserve): answer = 0 students = [1] * n for i in lost: students[i-1] -= 1 for i in reserve: students[i-1] += 1 for i in range(n): if students[i] == 0: if i != 0 and students[i-1] >= 2: stud..
programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr def solution(array, commands): answer = [] for i in range(len(commands)): i, j, k = commands[i][0], commands[i][1], commands[i][2] tmp = sorted(array[i-1:j]) answer.append(tmp[k-1]) return answer
programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr import re def solution(new_id): # 1단계 answer = new_id.lower() # 2단계 answer = re.sub('[^0-9a-z\.\-\_]', '', answer) # 3단계 answer = re.sub('[.]+', '.', answer) # 4단계 if answer.startswith('.'): answer = answer[..
www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net import sys, math N, K = map(int, sys.stdin.readline().split()) num = [1] * (N+1) answer = 0 for i in range(2, N+1): for j in range(i, N+1, i): if num[j]: num[j] = 0 answer += 1 if answer == K: print(j) break
programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr import math def solution(n): answer = 0 arr = [1] * (n+1) for i in range(2, int(math.sqrt(n))+1): if arr[i]: for j in range(2*i, n+1, i): arr[j] = 0 for i in range(2, n+1): if arr[i]: answer += 1 r..
programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr import itertools def solve(num): if num < 2: return False for i in range(2, num): if num % i == 0: return False return True def solution(numbers): answer = [] arr = [] for i in range(1, len(numbers)+1): ..