본문 바로가기
반응형

알고리즘8

[Python] 백준 2720 세탁소 사장 동혁 [Python] 2720번 세탁소 사장 동혁 풀이 t = int(input()) # 테스트 케이스 개수 q = 25 # 쿼터(Quarter, $0.25)의 개수 d = 10 # 다임(Dime, $0.10)의 개수 n = 5 # 니켈(Nickel, $0.05)의 개수 p = 1 # 페니(Penny, $0.01)의 개수 테스트 케이스 개수 t가 주어지니 t만큼 반복하며 print()하면 될 것 같습니다. for i in range(t): c = int(input()) 3이라고 입력받으면 3번 반복하며 거스름돈 c를 입력받습니다. print(c//q, c%q//d, c%q%d//n, c%q%d%n//p) 동전 수를 최소화 하기 위해서 가장 큰 단위부터 나눴을 때 몫을 구하면 됩니다. 그리고 그 다음 나머지를 .. 2023. 6. 21.
[Python] 백준 10162 전자레인지 [Python] 10162번 전자레인지 풀이 t = int(input()) # 초 a = 5*60 # 5분 버튼 b = 60 # 1분 버튼 c = 10 # 10초 버튼 t변수에 입력받은 요리시간을 넣고, 변수에 각 버튼들 시간을 넣어줍니다. if t%c >0: # T초를 맞출 수 없으면 (제일 작은 단위인 10초로도 나머지가 생기면) print(-1) 3개의 버튼으로 t초를 맞출 수 없으면 음수 -1을 첫 줄에 출력해야 하는데 10초 버튼인 c버튼으로도 맞출 수 없으면 a,b역시 사용해도 맞출 수 없기 때문에 위와 같이 작성했습니다. else: print(t//a,(t%a)//b,((t%a)%b)//c) 입력받은 요리시간을 맞출 수 있으면 최소버튼 조작을 구해야하기 때문에 제일 시간이 큰 버튼으로 요리시.. 2023. 6. 21.
[Python] 백준 1546 평균 [Python] 10811번 문제 풀이 n = int(input())# 과목 수 tests = list(map(int, input().split()))# 입력 점수 m = max(tests)# 점수 중 최고 점수 입력으로 과목 수, 입력점수 N개를 리스트로 받습니다. 그 중 최고 점수M은 max()함수를 사용해서 변수에 저장합니다. for i in range(n): tests[i] = tests[i]/m*100# 새로운 평균을 위한 점수 수정 모든 과목 점수는 과목점수/최고점수*100으로 바꾸라고 되어있으니 위와 같이 작성합니다. print(sum(tests)/n) 그리고 그 값들을 sum()함수로 더한 다음 과목 수N으로 나눠 평균을 구합니다. 정답 n = int(input()) tests = list.. 2023. 6. 21.
[Python] 백준 10811 바구니 뒤집기 [Python] 10811번 문제 풀이 n,m = map(int, input().split()) 바구니 수 N, 반복 횟수M을 입력 받습니다 basket = [i for i in range(1,n+1)] basket이라는 배열에 1부터 N까지 값을 넣습니다. n+1까지 해줘야 N까지 들어가겠죠? temp = 0 temp라는 변수를 -으로 최기화 해둡니다. for x in range(m): i,j = map(int, input().split()) temp = basket[i-1:j] temp.reverse() basket[i-1:j] = temp 반복 횟수 M만큼 반복하면서 i,j를 입력 받습니다. temp = 1부터 시작했으므로 basket의 i-1번째부터 시작, j는 포함해야하니 -1하지않고 슬라이싱 .. 2023. 6. 21.
[Python] 백준 3052 나머지 [Python] 3052번 문제 풀이nums = []nums라는 배열을 하나 만들고 시작하겠습니다. for i in range(10): n = int(input())%42수를 10개 입력받으니 for문을 이용해 입력을 10번 받습니다. 입력받은 수를 42로 나눈 나머지를 변수 n에 저장합니다. if n not in nums: nums.append(n)* for문안의 조건입니다. 그리고 그 n이 nums 배열에 없다면 nums배열에 추가합니다. 이러면 42로 나눈 나머지 값을 중복없이 nums배열에 추가할 수 있습니다. print(len(nums))그리고 중복되지 않는 값만 들어간 nums배열의 길이를 출력하면 개수를 출력할 수 있습니다. 정답nums = [] for i in range(10): n = i.. 2023. 6. 21.
[Python] 백준 5597 과제 안 내신 분..? [Python] 5597번 문제 풀이 students = [i for i in range(1,31)] # 1~30 => 30명 학생이 30명이니 st30개의 배열을 만드는데 1부터 30까지로 만듭니다. for i in range(28): # 28명이 제출 n = int(input())# 출석번호 students.remove(n) 그 중에서 28명만 제줄했으니 28번 반복하면서 입력값을 받습니다.입력받은 출석번호를 students배열에서 지워주면 출석번호가 안불린 번호만 남게됩니다. students.sort() 출석번호 중 가장 작은 것부터 출력해야하니 students배열을 sort()함수를 사용해 정렬해줍니다. for i in range(len(students)): print(students[i]) 남은.. 2023. 6. 13.
[Python] 백준 10813 공바꾸기 [Python] 10813번 문제 풀이 n,m = map(int, input().split()) basket = [0]*n temp = 0 바구니의 개수 N과 공 바꿀 횟수 M을 입력받습니다. 나중에 사용할 temp라는 변수는 0으로 초기화합니다. for x in range(n): basket[x] = x+1 basket의 0번째 = 1, 1번째 = 2가 들어가야 하니 x값을 1 더해서 넣어줍니다. for x in range(m): i,j = map(int, input().split()) temp = basket[i-1] basket[i-1] = basket[j-1] basket[j-1] = temp 공을 바꿀 횟수 M을 이용해 for문을 사용하고 그만큼 바꿀 두 바구니 i, j를 입력받습니다. 두 수를.. 2023. 6. 12.
[Python] 백준 10810 공 넣기 [Python] 10810번 문제 풀이 n,m = map(int, input().split()) 첫 번째 입력은 두 개의 정수를 받습니다. basket = [0]*n 그리고 모든 바구니는 0으로 지정합니다. 바구니는 총 N개이니 [0]*n으로 지정했습니다. for l in range(m): i,j,k = map(int,input().split()) for x in range(i,j+1): basket[x-1] = k M개의 줄에 걸쳐 공을 넣는 방법이 입력되니 반복문을 통해 입력을 M번만큼 받습니다. i번 바구니부터 ~ j번 바구니까지 k공을 넣는데 1번 바구니부터 넣는다고 하면 basket[0] 바구니에 넣어야 하기 때문에 인덱스를 x-1로 해줍니다. 이렇게 바구니 인덱스에 k번호가 적혀있는 공을 대입.. 2023. 6. 12.
반응형