백준 14916. 거스름돈
·
백준
https://www.acmicpc.net/problem/14916복잡한 더티코드...n = int(input())ans, k, flag = 0,0,0if (n%5) % 2 == 0: ans += n//5 + ((n%5) // 2) flag = 1else: while (n//5)-k >= 0: if (n - 5*((n//5)-k)) % 2 == 0: ans += (n//5)-k + ((n - 5*((n//5)-k)) // 2) flag = 1 break k += 1if flag == 1: print(ans)else: print(-1)깔끔한 코드n = int(input())ans = 0while ..
99클럽 코테 스터디 14일차 TIL - 거스름돈(백준 #14916)
·
99클럽 코테 스터디
❇️오늘의 학습 키워드 : 거스름돈(백준 #14916)문제춘향이는 편의점 카운터에서 일한다.손님이 2원짜리와 5원짜리로만 거스름돈을 달라고 한다. 2원짜리 동전과 5원짜리 동전은 무한정 많이 가지고 있다. 동전의 개수가 최소가 되도록 거슬러 주어야 한다. 거스름돈이 n인 경우, 최소 동전의 개수가 몇 개인지 알려주는 프로그램을 작성하시오.예를 들어, 거스름돈이 15원이면 5원짜리 3개를, 거스름돈이 14원이면 5원짜리 2개와 2원짜리 2개로 총 4개를, 거스름돈이 13원이면 5원짜리 1개와 2원짜리 4개로 총 5개를 주어야 동전의 개수가 최소가 된다.입력첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다.출력거스름돈 동전의 최소 개수를 출력한다. 만약 거슬러 줄 수 없으면 -1을 출력한..
백준 30689. 미로 보수
·
백준
https://www.acmicpc.net/problem/30689import sysinput = sys.stdin.readlinesys.setrecursionlimit(10**6)def dfs(y,x): global ans visited[y][x] = 1 # 방문처리 dy, dx = direction_map[arr[py][px]] ny, nx = y+dy, x+dx if nx = m or ny >= n: # 이동했을 때 탈출할 수 있으면 done[y][x] = 1 return if done[ny][nx]: # 중복계산방지 done[y][x] = 1 return elif visited[ny][nx]: # 이동하면 방문..
백준 27961. 고양이는 많을수록 좋다
·
백준
https://www.acmicpc.net/problem/27961import sysinput = sys.stdin.readlinen = int(input())cat = 1cnt = 0if n == 0: print(0)elif n == 1: print(1)else: while True: if cat*2 >= n: cnt += 1 break else: cat *= 2 cnt += 1 print(cnt+1)다른 풀이n = int(input())if n = n: print(i+1) break else: i += 1
99클럽 코테 스터디 13일차 TIL - 고양이는 많을수록 좋다(백준 #27961)
·
99클럽 코테 스터디
❇️오늘의 학습 키워드 : 고양이는 많을수록 좋다(백준 #27961)문제마법소녀인 마도카는 너무나도 고양이를 좋아하는 나머지 마법을 이용하여 고양이 N마리를 집에서 키우기로 결심했다!마도카는 한 번의 행동에서 다음 2가지 마법 중 하나를 선택하여 사용한다. 처음에는 마도카의 집에 고양이가 존재하지 않는다.생성 마법: 고양이 1마리를 마도카의 집에 생성한다.복제 마법: 마도카의 집에 있는 고양이 일부 또는 전부를 대상으로 하여 복제한다. 즉, 만약 현재 마도카의 집에 고양이가 k마리 존재한다면, 0마리 이상 k마리 이하의 고양이를 마도카의 집에 추가할 수 있다.마도카는 위의 2가지 마법을 적절히 사용하여, 최소의 행동 횟수로 마도카의 집에 정확히 N마리의 고양이가 있도록 만들고 싶다. 계산을 어려워하는 마..
백준 1461. 도서관
·
백준
https://www.acmicpc.net/problem/1461n, m = map(int, input().split())books = list(map(int, input().split()))books.sort()ans = 0plus_books = []minus_books = []for book in books: if book > 0: plus_books.append(book) else: minus_books.append(book)# 양수와 음수 리스트에서 가장 큰 값 중 절대값이 가장 큰 값을 찾아 한 번만 이동if plus_books and minus_books: max_distance = max(abs(plus_books[-1]), abs(minus_book..