본문 바로가기

9oormthon Challenge

(11)
[구름톤 챌린지 - 9oormthon Challenge] Day 15 과일 구매 - Python 파이썬 풀이 구름톤 챌린지 15일차 - 과일 구매 📜 문제 ✏️ 입력 ✏️ 출력 💡 풀이 그리디 알고리즘으로 풀 수 있는 이번 문제는 3주차에서 비교적 쉬운 문제였다. P(과일 가격), C(포만감)을 입력 받고, 각 과일의 조각마다 가지는 포만감을 value라고 정해 fruit 리스트에 한 번에 넣었다. 그리고 가격은 싸면서 포만감이 높아야하기 때문에 value를 기준으로 내림차순 정렬을 했다. N, K = map(int, input().split()) #N:과일의개수, K:가진돈 fruit=[] cnt = 0 for i in range(N) : P, C = map(int, input().split()) #P:각 과일의 가격, C:포만감 value = C // P fruit.append([P, C, value]) f..
[구름톤 챌린지 - 9oormthon Challenge] Day 13 발전기 2 - Python 파이썬 풀이 구름톤 챌린지 13일차 - 발전기 2 📜 문제 ✏️ 입력 ✏️ 출력 💡 풀이 그림으로 조금 더 쉽게 접근해봤다. 가장 많은 단지를 보유한 건물의 유형을 찾아야 하기 때문에, 건물의 개수도 세주고 temp와 cnt를 비교해서 가장 많은 단지가 나온 건물 유형을 찾도록 했다. N, K = map(int, input().split()) town = [list(map(int, input().split())) for _ in range(N)] dy = [-1, 1, 0, 0] dx = [0, 0, -1, 1] def dfs(i, j): stack = [(i, j)] #건물의 유형을 미리 저장 building_type = town[i][j] cnt = 0 while stack: y, x = stack.pop() i..
[구름톤 챌린지 - 9oormthon Challenge] Day 9 폭탄 구현하기 2 - Python 파이썬 풀이 구름톤 챌린지 9일차 - 폭탄 구현하기 2 📜 문제 1번과 같은 그림에서 만약 (2, 2)에 폭탄이 떨어지면, 상하좌우를 탐색해야 한다. (3, 2)는 #이므로 아무것도 더하지 않는다. (2, 3)에 폭탄이 떨어지면, 상태가 '@'인 곳에는 2만큼 폭탄의 영향을 받는다. ✏️ 입력 ✏️ 출력 💡 풀이 문제에서 '상하좌우'를 보자마자 Graph 가 생각이 났다. 먼저 폭탄이 떨어지면 상하좌우로 영향을 받는다. 만약 (y, x)에 폭탄이 떨어지면 영향은 (y-1, x), (y, x-1), (y+1, x), (y, x+1)에 받는다. 좌표를 조금 더 쉽게 계산하기 위해 dx = [0, 1, -1, 0, 0] , dy = [0, 0, 0, 1, -1]로 하였다. #는 변화가 없고, '0'은 +1, '@'은 +2..
[구름톤 챌린지 - 9oormthon Challenge] Day 8 통증 - Python 파이썬 풀이 구름톤 챌린지 8일차 - 통증 📜 문제 ✏️ 입력 ✏️ 출력 💡 풀이 처음에는 조건문에서 N의 범위를 따져 1일 경우, 7보다 작을 경우, 14보다 작을 경우로 계산을 했다. 오답이였다. 내가 놓친 조건들을 다시 찾아 다시 제출을 하니 정답이였다. N의 범위를 따져 조건문을 작성하되, 1일 경우에 이중조건문으로 다시 계산을 반복하게 했다. N = int(input()) res = 0 if N < 7 : res += N elif N < 14 : res += N - 6 else : res += N//14 N %= 14 if N < 7 : res += N else : res += N - 6 print(res) 문제 출처 : https://level.goorm.io/exam/195690/%ED%86%B5%EC%..
[구름톤 챌린지 - 9oormthon Challenge] Day 7 구름 찾기 깃발 - Python 파이썬 풀이 구름톤 챌린지 7일차 - 구름 찾기 깃발 📜 문제 ✏️ 입력 ✏️ 출력 💡 풀이 행렬 값이 0일때 인접한 8칸 중에서 구름이 K개 있는 칸의 개수를 구하는 문제이다. 모든 칸을 확인하면서 비어있는 경우에 개수를 세도록 하였다. n, k = map(int, input().split()) mat = [input().split() for i in range(n)] dy, dx = [-1, -1, -1, 0, 0, 1, 1, 1], [-1, 0, 1, -1, 1, -1, 0, 1] for i in range(n): for j in range(n): if mat[i][j] == '0': flag = 0 for a in range(8): y, x = i + dy[a], j + dx[a] if y ..
[구름톤 챌린지 - 9oormthon Challenge] Day 6 문자열 나누기 - Python 파이썬 풀이 구름톤 챌린지 6일차 - 문자열 나누기 📜 문제 ✏️ 입력 ✏️ 출력 💡 풀이 지난주 문제들에 비해 조금 난이도가 있었던 것 같다. 문제 공개 당일까지 풀지는 못하고 다음날 오전에 풀게되었다. 문자열을 가능한 조합으로 나누고, 그 조합들에서 최대를 찾아야한다. 나는 문자열을 가능한 조합으로 나누는 함수 search를 만들었다. 인자값으로 들어오는 start는 문자열 조합의 시작을 뜻하고 cnt는 남은 문자열을 몇 부분으로 나눌 것인지를 넘겨주도록 했다. global 변수 set을 사용해서 저장하고 중복을 허용하지 않도록 했다. cal 함수에서는 문자열 조합들에서 최대값을 계산하도록 했다. start와 cnt는 search 함수와 똑같고, P는 문자열을 임시로 저장하는 배열이다. 이후 main 에서는 문자..

728x90