[프로그래머스] 콜라 문제 - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 빈병 콜라 a개를 주면 b개를 준다. n개의 빈병을 가져다 주면 총 몇개의 빈 병을 돌려받는가 식 : n - n의 최대공약수 + n//a = n ​ n개는 내가 가지고 있는 빈 병 개수로 루프를 돌때 가지고 있는 빈병이 필요한 빈병 개수보다 작으면 탈출한다. 루프를 돌때마다 내가 가지고 있는 병으로 나올수 있는 최대 빈병수들을 더한다. def solution(a, b, n): answer = 0 while True: if n < a: break count = (n//a) * b n = n - ((n//a)*a) + count answer += count return answer
[프로그래머스] 옹알이(2) - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 아기의 옹알이는 'aya', 'ye', 'woo', 'ma'만 할 수 있다. 같은 옹알이를 두번이상 발음할수 없다. 아기의 옹알이는 그대로 발음해야한다 woo -> wo는 불가능하다. babbing 리스트에 있는 옹알이를 말할수 있는 발음으로 조합이 되는지 알아보자 ​ babbing 리스트에서 발음하나씩 꺼내서 조카가 말할수 있는 단어들을 하나씩 조합하게 만들었다. 발음을 리스트로 담고 길이가 0이되면 루프를 나오고 만약 처음에 성공하는 발음이 하나도 없을시 루프를 통과한다. 같은 옹알이를 두번 할 수 없기에 check 를 통해 루프를 돌때 이전에 같은 발음을 했는지 체크한다. def solution(babbling): answer = 0 for i in babbling: my_list = l..
[프로그래머스] 햄버거 만들기 - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 햄버거를 빵, 야채, 고기, 빵 순서로 만들수 있는 개수를 구해라 연속된 순서여야만 햄버거로 만들수 있다. 1,2,3 순서대로 빵,야채,고기 이다. 햄버거를 만들면 만들어진 부분이 제거된 상태로 재료를 다시 쌓아서 햄버거가 완성되는지 본다. ​ 문제의 경우 리스트에서 [1,2,3,1] 을 찾고 리스트에서 해당 인덱스들을 삭제후 다시 [1,2,3,1]을 찾는 작업을 한다. 리스트의 index의 경우 햄버거를 찾았을때 다시 처음으로 돌아가는게 아닌 찾은 위치의 -3부터 시작해서 찾는다 이경우는 어차피 앞부분은 햄버거를 못찾기에 다시 햄버거를 만들수 있는 -3인덱스로 시작해서 탐색한다. 마지막 햄버거의 경우 리스트길이 -3보다 인덱스가 크면 반복문은 끝난다. def solution(ingredien..
[프로그래머스] 푸드 파이트 대회 - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 음식의 나열을 적은 칼로리부터 큰 칼로리로 왼쪽 오른쪽 같이 배열 중간에는 물로서 0이 들어가야 한다. food의 0 인덱스는 남은 음식이어서 인데스 1부터 123시작 ​ 왼쪽 선수와 오른쪽 선수의 음식의 나열이 같으므로 리스트에 담아서 나열하고 중간에 0을 삽입후 역정렬한 리스트를 나열시켜서 문제를 해결하였다. def solution(food): answer = '' del(food[0]) list = [] num = 0 for i in food: if i%2 == 1: i -= 1 num += 1 for j in range(int(i/2)): list.append(num) answer = ''.join(map(str, list)) + '0' list.sort(reverse=True) ans..
[프로그래머스] 가장 가까운 같은 글자 - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 문장을 받아 한글자씩 같은 글자가 있는지 비교를 한다. 비교했을 때 같은 글자가 없다면 -1 같은 글자가 있다면 거리값이 리스트에 들어간다. 같은 글자가 2개 이상 있다면 가까이에 있는 값이 리스트에 들어간다. 비교는 현재 글자 인덱스보다 작은것만 비교한다. ​ 제한사항에 문장의 길이는 10,000 으로 제곱이 되어도 시간복잡도상 문제가 없을거 같아 완전탐색으로 풀었다. def solution(s): # 첫번째 리스트 값은 무조건 -1이다. answer = [-1] for i in range(1, len(s)): index = [] count = 0 for j in range(0, i): if s[i] == s[j]: index.append(i-j) count += 1 if count == 0..
[프로그래머스] 과일 장수 - Python(파이썬)
·
파이썬/코딩테스트
문제 이해 사과의 박스안에는 m개 만큼 들어간다 사과박스 가격은 m * (사과박스에 들어있는 최저점수) 이다. 최대의 이윤을 받으려면 사과박스를 어떻게 만들어야하는가 사과들을 역순으로 정렬 시켜서 리스트에 m개씩 분할시키기로 했다. 각 리스트들을 정렬하여 첫번째 값 최저점수를 뽑아 * m을 하였고 리스트에 담았다. 최종으로 리스트의 합계를 더한 값이 최대의 이윤을 만든 값이 된다. def solution(k, m, score): score.sort(reverse=True) list_chunked = list_chunk(score, m) result = [] for i in list_chunked: if len(i) == m: i.sort() result.append(i[0] * m) return sum(..
[백준] 베스트셀러 - Python(파이썬)
·
파이썬/코딩테스트
입력학 n개들의 책중 가장 많이 입력된 책의 이름을 출력해주는 알고리즘이다. ​ 우선 책들의 중복을 제거한 값들과 책들을 비교하면서 책종류마다 카운트를 리스트로 만들었고 ​ 카운트가 담긴 리스트와 카운트 리스트의 MAX 값을 비교해 MAX가 한개 이상일 경우 temp 임시 리스트에 담아 ​ 값을 정렬하여 첫벗째 값으로 프린트해주었다. # 베스트셀러 n = int(input()) book = [] for i in range(n): book.append(input()) # 입력된 책들의 중복을 제거하여 책 종류만 리스트에 담는다. bookList = list(set(book)) result = [] # 책 종류별로 몇권의 책이 있는지 개수를 리스트에 담는다. for i in bookList: cnt = 0 ..
[백준] 통계학 - Python(파이썬)
·
파이썬/코딩테스트
예외조건 n개의 숫자를 입력받아 총 4가지의 결과를 출력하면 되는 문제이다. ​ 첫번째 줄은 산술 평균값을 구하는 문제로 n개의 값의 평균을 구하는데 첫번째 자리는 반올림하여 출력을 하기에 리스트의 총합을 n만큼 나눴다. ​ 예외조건으로 평균값이 -1 에서 0사의의 값이면 반올림하여 -0이 아닌 0으로 만들었다. ​ 두번째 줄은 중앙값 출력으로 이 문제의 경우 전부 홀수로 이루어져있기에 리스트를 정렬하고 리스트 길의의 // 2한값의 리스트 값을 찾아주었다. ​ 세번째 최빈값 출력으로 빈도수가 제일 많이 나온 숫자를 출력한다. (빈도수가 같을경우 두번째로 작은 숫자 출력) ​ 이 같은 경우 파이썬 딕셔러리를 사용하여 리스트에 존재하는 숫자를 키로 사용하여 숫자가 딕셔러리에 미존재하면 추가 존재하면 valu..
[백준] 덩치 - Python(파이썬)
·
파이썬/코딩테스트
n명의 사람들의 덩치 순위를 구하는 문제이다. ​ 키와 몸무게가 다른 사람과 비교하여 둘다 높을경우 등수가 위의 사람이고 ​ 키 몸무게가 다른사람보다 둘다 낮을경우 등수가 아래로 내려가는 문제이다. ​ 키와 몸무게가 하나만 높을경우는 동급의 등수를 측정하기로 했다. ​ 나는 등수를 리스트에 담아 그래도 출력해서 왜 결과가 안나오는지 해매었다. ​ 추후 등수를 하나씩 출력하며 공백을 추가하는 값으로 변경하니 바로 정답 n = int(input()) result = [] for i in range(n): result.append(list(map(int, input().split()))) for i in range(n): k = 1 for j in range(n): if i != j and result[i][..
[백준] 분해합 - Python(파이썬)
·
파이썬/코딩테스트
1부터 입력값 n까지 for문 을 돌면서 출력되는 생성자와 입력된 n 값이 ​ 동일하면 return 하는 파이썬 프로그램을 작성하였다. ​ 생성자의 경우 n + 각자리수 합으로 아래와 같이 구현하였다. # 2231 분해합 import sys n = int(sys.stdin.readline()) num = 1 minResult = 0 for i in range(n): result = num + sum(list(map(int, str(num)))) if result == n: minResult = num break num += 1 sys.stdout.write(str(minResult)+'\n')
[백준] 한수 구하기 - Python(파이썬)
·
파이썬/코딩테스트
브루트포스 알고리즘으로 ​ 전체를 다 탐색하면서 결과를 구하는 알고리즘이다. ​ 이문제의 경우 자리수의 합이 등차수열을 이루고 있으면 한수라고 나타내는데 ​ 1부터 99의 경우의 모든 수는 등차수열을 이루고 있고 100 이상 1000이하의 수는 ​ 각 자리수의 합을 비교함으로 한수의 개수를 구하는 프로그램을 구현하였다. n = int(input()) if n < 100: print(n) else: cnt = 0 for i in range(100, n + 1): result = list(map(int, str(i))) a = result[0] - result[1] b = result[1] - result[2] if a == b: cnt += 1 print(cnt + 99)
[백준] 일곱 난쟁이 - Python(파이썬)
·
파이썬/코딩테스트
9명의 난쟁이중 2명은 백설공주의 난쟁이가 아니라고 가정하였다. ​ 이중 for문으로 처음 서있는 난쟁이와 두번째 서있는 난쟁이의 키를 합산하여 ​ 9명의 난쟁이 - 2명의 난쟁이 == 100 이면 또 그때 존재하는 난쟁이들의 위치를 리스트에 담아 result = [] for i in range(9): result.insert(i,int(input())) sum = sum(result) num = 0 check = False for i in range(9): if check == True: break for j in range(i+1, 9): num = sum - result[i] - result[j] if num == 100: result.remove(result[j]) result.remove(res..
대전집주인
'분류 전체보기' 카테고리의 글 목록 (7 Page)