목록분류 전체보기 (52)
0과 1 사이
처음에는 순차탐색을 이용했다. 이진탐색을 구현할 생각은 못했는데, 탐색 범위가 1에서 10억까지인걸 보니 이진탐색으로 구현해야 효율적으로 코드를 구성할수 있다. 그래서 답지를 보고 참고한 코드 n, m = map(int, input().split()) #떡 개수와 필요한 떡 길이 입력받기 rice = list(map(int, input().split())) #떡 길이 배열 생성 start = 0 end = max(rice) result = 0 #이진 탐색 수행 while(start mid: #총 떡의 양 계산 total += x - mid if total < m: #떡의 양이 부족하면 더 많이자르기. 왼쪽 부분 탐색 end = mid - 1 else: #떡의 양이 충분하면 덜 자르기. 오른쪽 부분 탐색 ..
이 문제는 다이나믹 프로그래밍을 연습하기위해 푼 문제다. 처음 작성한 코드는 아래와 같은데, 나중에 d 배열을 출력할 때 7, 11, 13, 17 등 소수에 대해서만 0값이 출력된다는 문제가 있다. n에 대한 값은 정확히 출력된다. 아. 밑의 코드는 d[n]만 정확히 구하기 위한 함수로서, 7, 11, 13 등의 소수는 호출되지 않는다. 그렇다면 반복문을 이용하여 1~n에 대해 모두 정확히 구하려면 코드를 개선해야한다. x = int(input()) d = [0] * (x+1) def mincount(n): if n == 1: return 0 if d[n] != 0: return d[n] if n % 5 == 0: d[n] = min(mincount(n//5) + 1, mincount(n-1) + 1) ..
아직 dfs를 잘 모르는것 같아 dfs 예제를 풀어봤다. n, m = map(int, input().split()) ice = [] for i in range(n): ice.append(list(map(int,input()))) count = 0 def dfs(i, j): if i = n or j = m: return False if ice[i][j] == 1: return False ice[i][j] = 1 dfs(i+1, j) dfs(i, j+1) dfs(i-1, j) dfs(i, j-1) return True for i in range(n): for j in range(m): if dfs(i, j) == True: count += 1 print(count) 그런데..
몇몇 테스트 케이스에서 통과했는데 10개의 테스트 케이스에서 런타임 에러로 실패했다. 왜인지 계속 들여다봤는데 내 코드가 답지와도 유사해서 더 모르겠더라. 계속 보니까 조건 하나를 빠트려서 실패했다. 기둥일 경우 보의 한쪽 끝부분 위에 있는 경우는 2가지가 있다. 나는 1가지 경우만 체크했었음 .. 그래서 그 조건만 추가하니까 통과! def istrue(answer): #조건 모두 만족하는지 확인 for i in answer: if i[2] == 0: #기둥 if i[1] == 0: #바닥 위에 있는 경우 continue row = [i[0] - 1, i[1], 1] row_2 = [i[0], i[1], 1] col = [i[0], i[1] - 1, 0] if row in answer or row_2 i..
처음엔 deque를 이용해 구현했다. from collections import deque def solution(food_times, k): if sum(food_times) 0 : queue.append(j) break return queue.popleft() + 1 그러나 효율성 제로..ㅜ 효율성이 o(n2)이라 그런것같다. 답지를 보면서 코드를 수정한 결과 import heapq def solution(food_times, k): if sum(food_times)
굉장히 뻘짓을 했다.. 이 문제는 dfs나 bfs 로 풀어야하는것 같다. ㅜ 아. dfs로 풀면 최단거리가 나오지 않는다. 최단거리 문제는 bfs로 풀어야한다. 정답 코드.. from collections import deque n, m = map(int, input().split()) gamemap = [i for i in range(101)] #게임판. i번째 칸에는 i로 이동 distance = [0] * 101 # 1번부터 해당칸까지의 거리 for i in range(n+m): x, y = map(int, input().split()) gamemap[x] = y #게임판. 사다리가 있으면 x번째 칸에서 y로 이동 p = 1 queue = deque([p]) while p != 100: #1~6 까..
짜잔 ~~ 카카오에 DB 엔지니어로 지원을 했는데, 서류전형에 합격했다! 두근두근 신나서 며칠뒤 코딩테스트를 봤는데.. 10문제 100분이었고, sql 엔지니어링 기초 문제 라고 쓰여있었다 ㅜ 그래서 sql을 공부해갔는데, 난생 처음보는 주관식 위주의 문제들이었다. 데이터베이스에 관한 이론들. 정말 이론적으로 빠삭한 사람을 뽑으려 하나보다 싶었고 그래도 나름 열심히 풀어서 맨 뒤 코딩문제 하나 빼고는 다 풀었는데, 결과는 불합격 . ㅜ 그럴것 같았다.. 경력직을 선호하는 듯 하다.
https://www.acmicpc.net/problem/15988 15988번: 1, 2, 3 더하기 3 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 첫 코드 t = int(input()) n = [] for _ in range(t): n.append(int(input())) max_n = max(n) result = [0] * (max_n+1) result[1] = 1 result[2] = 2 result[3] = 4 for i in range(4, max_n+1): result[i] = result[i-1] + result[i-2] + result[i-3] for i in range(t): ..