본문 바로가기

코딩테스트/Python

(225)
[Python] 프로그래머스 - 구명보트 문제 https://programmers.co.kr/learn/courses/30/lessons/42885# 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 풀이 def solution(people, limit): answer = 0 people.sort() # 1 left =0 right = len(people)-1 while left < right: if people[left] + people[right]
[Python] 프로그래머스 - 타겟 넘버 문제 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 풀이 def dfs(numbers,depth,num,target): global cnt if depth == len(numbers): if num == target : cnt+=1 return dfs(numbers,depth+1,num+numbers[depth],target) dfs(numbers,depth+1,num-numbers[..
[Python] 프로그래머스 - 신고 결과 받기 문제 https://programmers.co.kr/learn/courses/30/lessons/92334?language=python3 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 풀이 def solution(id_list, report, k): report = set(report) # 신고 중복 제거 dic = {i:0 for i in id_list} # 신고당한 횟수 dic2 = {i:0 for i in id_list} # 신고 대상이 k회 이상 신고 된 횟수 # 신고 횟수 구하기 for r ..
[Python] 백준 #5582 - 공통 부분 문자열 문제 https://www.acmicpc.net/problem/5582 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net 풀이 a = input() b = input() d = [[0 for _ in range(len(b)+1)] for _ in range(len(a)+1)] m = 0 for i in range(1,len(a)+1): for j in range(1,len(b)+1): if a[i-1]==b[j-1]: d[i][j] = d[i-1][j-1] + 1 m = max(m,d[i][j]) p..
[Python] 백준 #17615 - 볼 모으기 문제 https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주 www.acmicpc.net 풀이 n = int(input()) s = input() r = s.split('R') b = s.split('B') print(min(len(''.join(r[:-1])),len(''.join(r[1:])),len(''.join(b[:-1])),len(''.join(b[1:])))) 문자열을 R과 B를 기준으로 나눠준 후 (split), 길이를 구하는 식으로 풀..
[Python] 백준 #5397 - 키로거 문제 https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 풀이 n = int(input()) for _ in range(n): list1 = [] list2 = [] ss = list(input()) for s in ss: if s == '': if len(list2) != 0: list1.append(list2.pop()) elif s=='-': if len(list1) != 0: list1.pop() else: list1.append(s..
[Python] 백준 #1325 - 효율적인 해킹 문제 https://www.acmicpc.net/problem/1325
[Python] 백준 #20546 - 기적의 매매법 문제 https://www.acmicpc.net/problem/20546 20546번: 🐜 기적의 매매법 🐜 1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 모든 결과 따옴표를 제외하고 출력한다. www.acmicpc.net 풀이 n = int(input()) arr = input().split() p1_m,p1_j = n,0 # BNP 전략 p2_m,p2_j = n,0 # TIMING 전략 p2_arr = [] arr = list(map(int,arr)) for cost in arr: # BNP 전략 p1_j += p1_m//cost # 살 수 있는만큼 매수 p1_m = p1_m%cos..