전체 글 324

[백준-파이썬] 1012번: 유기농 배추

백준 1012번 문제 보러가기~~ 📌 포인트 DFS로 풀었다!! 방금 푼 단지번호 붙이기 문제와 비슷한 것 같다. 백준 단지번호 붙이기 문제 보러가기 내 풀이 보러가기 😅 위기 잘 풀었다고 생각했는데 '런타임 에러 (RecursionError)'가 나왔다. DFS로 풀었는데 다음에는 BFS로 생각해봐야지~ 백준 안내에 있는 대로 import sys sys.setrecursionlimit(10**6)를 추가해서 파이썬 최대 재귀 깊이를 크게 설정하니 성공했다. 👩‍💻 코드와 설명 import sys sys.setrecursionlimit(10**6) # 최대 재귀 깊이 설정 dx=[-1,0,1,0] dy=[0,1,0,-1] def DFS(x,y): for p in range(4): #상하좌우..

[백준-파이썬] 2468: 안전 영역

백준 2468번 문제! 🔑코드와 설명 BFS로 풀었다. from collections import deque import copy #위, 아래, 오른쪽, 왼쪽을 체크하기 위해서 dx=[-1,0,1,0] dy=[0,1,0,-1] #입력 받기 n=int(input()) zone=[list(map(int,input().split())) for _ in range(n)] #가장 낮은 곳, 가장 높은 곳을 파악하려고 함 start=float('inf') #가장 낮은 곳의 높이 (사실 이 값은 사용하지 않음..) finish=-float('inf') #가장 높은 곳의 높이 for i in zone: for j in i: if j finish: finish=j safe_zone=[] #여..

[백준-파이썬] 19685번: Palindromic FizzBuzz

백준 19685번 문제~ FizzBuzz문제를 풀다가 관련 있는 건가? 해서 풀어봤다. 🎨 코드와 설명 s,f=map(int,input().split()) #시작점, 끝나는 점 입력받음 for i in range(s,f+1): #시작~끝까지 if str(i)==''.join(reversed(str(i))): #거꾸로 그 숫자를 봐도, 그 숫자와 같으면 print("Palindrome!") #Palindrome! 출력! else: #아니라면 print(i) #숫자 출력🎉 배운 점 reverse, reversed의 차이점 reverse 리스트 타입이 제공하는 함수. (리스트만 사용 가능) 리스트 값 자체를 바꿈. 아무것도 반환하지 않음. reversed 내장함수. (시퀀스 자료형 사용 가능) ..

[백준-파이썬] 7569: 토마토

백준 7569번 문제~ 😍 코드와 설명 BFS로 풀었다! import sys from collections import deque #앞뒤좌우상하를 봐야 하므로 dx=[-1,0,1,0,0,0] dy=[0,1,0,-1,0,0] dz=[0,0,0,0,1,-1] #입력받기 m,n,h=map(int,input().split()) tomato_zone=list(list(list(map(int,input().split())) for _ in range(n)) for _ in range(h)) #deque만들기 Q=deque() days=[[[0]*m for _ in range(n)] for _ in range(h)] #쭉 보면서 익은 토마토를 발견하면 모두 deque에 넣는다. for x in range(h): fo..

[백준-파이썬] 11723: 집합

백준 문제 보러 가기~ 어렵게 풀었다... 그러다 보니 두 가지 방식으로 풀었고, 새로운 것 (비트 마스킹!)도 알게 되었다. (비트 마스킹을 새로 알게 된 것이 신기해서 열심히 설명을 쓰려고 했습니다. 그러나, 설명에 오류나 부족한 부분이 있을 수도 있습니다.ㅠㅠ 댓글로 남겨주시면 감사하겠습니다~) 1번 풀이 코드 👨‍💻 (With 비트 마스킹) import sys M = int(sys.stdin.readline()) S = 0b0 #이진수(비트) 연산하기 위해서 0b. for _ in range(M): order = sys.stdin.readline().strip() try: command, num = order.split() num = int(num) if command == 'add&#39..

[백준-파이썬] 14465: 소가 길을 건너간 이유 5

소가 길을 건너간 이유 5 후기 🤗 이 문제를 풀면서 슬라이딩 윈도우, 스위핑!! 이라는 것을 처음 들어봤다. 그래서 기억할 겸 간단하게라도 후기와 코드를 올린다. 전에 귀여운 라이언 문제를 풀 때도 투 포인터로 풀었었는데, 슬라이딩 윈도우랑 투 포인터랑 비슷한 느낌이다. 스위핑은 특정한 자료구조로 푸는 것은 아니고, 한번만 쭉 스캔해서 해결하는 기법이라고 한다. 투 포인터는 1차원 배열에서 두 개의 포인터(보통 시작점, 끝점인 것 같다)를 이용해서 문제를 푸는 것이다. 슬라이딩 윈도우는 투 포인터와 비슷한데, 항상 시작점과 끝점 사이 간격이 똑같은 경우라고 한다. 라이님의 블로그 글을 보니까 이해가 잘되었다! 코드 👨‍💻 n, k, b = map(int,input().split()) min_fix = ..

[백준-파이썬] 2591: 숫자카드

문제 보러 가기!! TMI로 시작하는 서론 이 문제는 전에 풀었던 포도주 시식 문제와 비슷한 식으로 풀었다..! 그 문제는 어떻게 풀어야 할지 잘 모르겠어서, 친구에게 물어봐서 풀었다. 포도주 시식 백준 문제 보러가기~ 벨로그에 올린 문제풀이 보러가기! 그러다 이를 활용해서 숫자카드를 혼자서 푸니 너무 뿌듯하고 기분이 좋아서 벨로그에 글을 쓴다 ㅎㅎ 😍 아이디어, 설명 2차원 리스트를 활용해서 풀었는데 말보다 그림이 더 이해가 잘 될 것 같아서, 그림을 올린다..! 숫자를 문자열로 받아서 인덱스로 하나 하나 본다. 2차원 리스트 dp의 열은 각각 인덱스의 숫자를 1자리로 표현할 때 경우의 수 누적, 이전 인덱스의 숫자와 해당 인덱스의 숫자를 2자리 카드로 표현할 때 경우의 수 누적을 의미한다. 행은 각각..

[백준-파이썬] 2156: 포도주 시식

문제 보러 가기~! 아이디어 🌊 내가 전에 풀었던 DP들과는 다른 유형(?)인 것 같아서,,, 생각하다가 모르겠어서 친구에게 힌트를 얻었다.. 이런 점화식은 도대체 어떻게 생각해내는지 신기하다!! ㅠㅠ 코드 👩‍💻 n = int(input()) wines = [] for _ in range(n): wines.append(int(input())) wines.insert(0,0) drunk_wine = list([0]*(n+1) for _ in range(3)) # print(drunk_wine) for i in range(1, n+1): drunk_wine[0][i] = max(drunk_wine[0][i-1], drunk_wine[1][i-1], drunk_wine[2][i-1]) drunk_wine[1..

728x90