본문 바로가기

전체 글400

028 트리의 지름 첫번째 코드 BFS에서 평소에 이용하던 visited만이 아닌 distance를 고려해서 구해야 한다. 그렇기 때문에 tuple로 노드와 가중치를 함께 저장해서 하나씩 풀어가는 형식으로 문제를 풀어야 한다! 책의 도움을...ㅎㅎ; 많이 받았지만 그래도 그만큼 BFS에 익숙해지는 거라고 생각하자! import sys input = sys.stdin.readline from collections import deque n = int(input()) A = [[] for _ in range(n+1)] for _ in range(n): data = list(map(int, input().split())) index = 0 s = data[index] index += 1 while True: e = data[in.. 2024. 5. 16.
햄버거 만들기 첫번째 코드 4개씩 [1, 2, 3, 1]과 비교한 후에 해당 값이 있으면 다시 처음부터 쭉쭉 비교하는 과정으로 진행했다! def solution(ingredient):     answer = 0     hamburger = [1, 2, 3, 1]     i = 0               while i != len(ingredient):         if ingredient[i:i+4] == hamburger:             answer += 1             del ingredient[i:i+4]             i = 0         else:             i += 1                  return answer 근데 반만 맞고 반은 시간 초과가 뜬다..... 2024. 5. 16.
행렬의 곱셈 첫번째 코드 이전에 행렬을 다루는 방법을 배웠다! "네모난 행렬을 어떻게 만들지?"가 아니라 "리스트 안에 리스트가 있다"라고 생각하는 편이 나한테는 더 편했다 오늘의 문제도 리스트 안에 있는 리스트 안에 어느 위치에 있는 원소들끼리 곱해지는 것인지에 대해서 차근차근 생각했다 그 결과 생각보다 어렵지 않게 차근차근 순서를 맞춰갔다 "너는 얘랑 곱해지고~ 몇번 곱해지고~ 다음에는 얘랑 더해지고~"이런 느낌? for문을 두 개로 끝내고 싶었는데 아무리 생각해도 변해야하는 값들이 3개였다. 그래서 처음으로 for문 안에 for문 안에 for문을 사용했다! for문이 많아지면 헷갈릴 수 있는데 나름 차분하게 잘 푼듯! 뿌듯:) def solution(arr1, arr2): answer = [] for i in .. 2024. 5. 15.
붕대 감기 첫번째 코드 시간이 채워지면 추가로 HP 회복공격을 당하면 HP가 떨어지고0보다 작아지면 거기서 바로 죽음! def solution(bandage, health, attacks):     answer = health     clear = 0     attack_time = []          for i in range(len(attacks)):         attack_time.append(attacks[i][0])          for i in range(attack_time[-1]+1):         if i in attack_time:             pos = attack_time.index(i)             power = attacks[pos][1]             a.. 2024. 5. 15.
025 ABCDE 첫번째 코드 먼저 문제 이해를 잘못했었다... 꼭 ABCDE가 아니여도 5개가 얽힐 수 있으면 되는 것이다!! DFS는 뭔가 그림으로 그리거나 하면 이해가 될 듯 하다 하지만 코드로 재귀로 들어가면 작성이 어려운 것 같다... 그래서 이번 코드도 책을 참고했다... 다음에는 꼭 혼자 풀어보고 싶다....... 기출문제에 많이 나오는 유형인데... 그래도 조금은 익숙해지고 있지 않을까..?ㅎㅎ;; import sys input = sys.stdin.readline sys.setrecursionlimit(10000) n, m = map(int, input().split()) arrive = False A = [[] for _ in range(n+1)] visited = [False] * (n+1) def D.. 2024. 5. 14.
026 DFS와 BFS 첫번째 코드 먼저 이번에는 DFS는 꼭 답안을 참고할일을 없애보자...! 라는 목표! BFS는 처음 접하는거니까 기억하면서 풀어보자! 였는데 그래도 DFS는 차근차근 다른 문제 참고하면서 작성한 것 같다! 그리고 느껴지는 건 BFS가 좀 더 코드는 쉬운 느낌이다! (앞으로 혼자 뚝딱할 정도라고는 안했다 ㅎㅎㅎ;;) import sys from collections import deque input = sys.stdin.readline sys.setrecursionlimit(10000) n, m, v = map(int, input().split()) A = [[] for _ in range(n+1)] visited = [False] * (n+1) def DFS(x): print(x, end = ' ') v.. 2024. 5. 14.
728x90