Programmers / *[1차] 다트게임 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: [1차] 다트게임 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/17682 나의 풀이(미완성) def solution(dart): arr=[] tmp = [] sum = 0 for x in dart: #문자열 분리 arr.append(x) for i in range(len(arr)): if arr[i].isnumeric(): arr[i] = int(arr[i]) for i in range(1,len(arr)): #10 처리 if arr[i-1] == 1 and arr[i] == 0: arr[i-1] = 10 arr.pop(i) for i in range(1,len(arr)):#S,D,T if a..
Programmers / 로또의 최고 순위와 최저 순위 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 로또의 최고 순위와 최저 순위 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/77484 나의 풀이 def solution(lottos, win_nums): cnt = [0,0] num = [] zero_cnt = 0 for i in lottos: if i in win_nums: num.append(i) if i == 0 : zero_cnt += 1 if len(num) == 0 : cnt[1] = 6 elif len(num) == 1: cnt[1] = 6 elif len(num) == 2: cnt[1] = 5 elif len(num) == 3: cnt[1] = 4 elif len(num) == ..
Programmers / 숫자 문자열과 영단어 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 숫자 문자열과 영단어 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/81301 풀이 1 딕셔너리 리플레이스 def solution(s): nums = { 'zero' : '0', 'one' : '1', 'two' : '2', 'three' : '3', 'four' : '4', 'five' : '5', 'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9' } for key, value in nums.items(): s = s.replace(key,value) return int(s) 풀이 2 리스트 리플레이스 ( 인덱스와 해당 문자열이 같은 것 이용)..
Programmers / 완주하지 못한선수 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 완주하지 못한선수 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/42576 나의 풀이(틀림) def solution(participant, completion): new_list = list(set(participant) - set(completion)) for x in new_list: return x 나의 함수는 동명이인이 있는 경우는 고려되지 않는 잘못된 함수이다.. 다른 풀이 def solution(participant, completion): participant.sort() completion.sort() for p,c in zip(participant, completion): if ..
Programmers / 부족한 금액 계산하기 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 부족한 금액 계산하기 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/82612 나의 풀이 def solution(price, money, count): sum = 0 for i in range(1,count+1): sum += price *i if sum - money > 0: return sum - money else: return 0 모범답안 def solution(price, money, count): return max(0,price*(count+1)*count//2-money) 등차수열의 합공식을 사용하여 식을 작성하였다. 등차수열의 합은 다음과 같다. a:초항 l:마지막항 n:수열의 ..
Programmers / 3진법 뒤집기 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 3진법 뒤집기 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/68935 풀이 def solution(n): tmp = '' while n: tmp += str(n % 3) n = n // 3 answer = int(tmp, 3) return answer 다른 풀이 * divmod 함수 이용 x와 y를 받으면 x를 y로 나눈 몫과, 나머지가 들어있는 tuple을 리턴하게 된다. 튜플은 for in으로 순회 가능하다. def solution(n): answer = '' while n > 0: n, re = divmod(n,3)# n을 3으로 나눈 몫과 나머지 answer += str(re) retu..
Programmers / 최소직사각형 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 최소직사각형 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/86491 나의 풀이 def solution(sizes): '2번 지갑을 가로로 눕힌다 -> 가로 세로를 바꾸어줌' max_w = 0 max_h = 0 for i in sizes: if i[0] max_w: max_w = i[0] if i[1] > max_h: max_h = i[1] return max_w * max_h 다른 풀이 def solution(sizes): return max(max(x) for x in sizes) * max(min(x) for x in..
Programmers / 폰켓몬 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 폰켓몬 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/1845 나의 풀이 def solution(nums): select = len(nums) //2 set_list = set(nums) if len(set_list) > select: return select else: return len(set_list) 출력값으로 요구하는 것이 결국 "선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 return 하면 됩니다." 라는 것이므로 선택할 수 있는 포켓몬의 수가 고를 수 있는 포켓몬 종류(set 함수로 중복 제거) 보다 작으면 선택할 수 있는 포켓몬 수를 리턴하고 그게 아니면 포켓몬 종류의 수를 ..
Programmers / 예산 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 예산 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12982 *문제 포인트가 최대로 몇개의 부서를 지원해줄 수 있는가 이기 때문에 여기에 맞추어 문제를 풀어야한다. 나의 풀이 def solution(d, budget): d.sort() cnt = 0 #예산에서 가장 작은 값들을 빼나가는 구조 for i in d: if i
문제 / 격자판 최대합 / Python
·
coding test - python/기본기 문제
문제 제목: 격자판 최대합 나의 풀이 (80점) n = int(input()) d = list(list(map(int, input().split())) for _ in range(n)) sum_list = [] # 각 행열,대각선의 합을 저장하는 리스트 cross1_list = [] #대각선을 저장하는 리스트 cross2_list = [] #반대 대각선을 저장하는 리스트 for i in range(n): sum_list.append(sum(d[i][:n])) #각 행들의 합 sum_list.append(sum(d[:n][i])) #각 열들의 합 cross1_list.append(d[i][i]) #대각선의 수 cross2_list.append(d[i][n-i-1]) #반대대각선의 수 sum_list.app..
Programmers / 소수 만들기 / Python
·
coding test - python/Programmers
*문제 출처는 프로그래머스에 있습니다. 문제 제목: 소수 만들기 문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/12977 나의 풀이 def solution(nums): a = [] cnt = 0 for i in range(0, len(nums) - 2): # 리스트의 숫자 세개를 고름(조합) for j in range(i + 1, len(nums) - 1): for x in range(j + 1, len(nums)): a.append(nums[i] + nums[j] + nums[x]) #약수 판별 isPrime = True for x in a: for i in range(2,x//2+1): if x % i == 0: isPrime = False ..
문제 / *수들의 합/ Python
·
coding test - python/기본기 문제
문제 제목: 수들의 합 N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i]+A[i+1]+…+A[j-1]+A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오. ▣ 입력설명 첫째 줄에 N(1≤N≤10,000), M(1≤M≤300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. ▣ 출력설명 첫째 줄에 경우의 수를 출력한다. ▣ 입력예제 8 3 1 2 1 3 1 1 1 2 ▣ 출력예제 5 나의 풀이 n,m = map(int,input().split()) A = list(map(int,input().split())) cn..