즐거운 PS 👩‍💻🥰 141

[백준-파이썬] 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..

[백준-파이썬] 2573: 빙산

며칠 동안 고민 고민하고 많은 '틀렸습니다'와 '시간 초과'를 만났다.. 아직도 파이썬으로는 시간 초과가 나오지만... 파이썬으로 시간 초과 안 나오는 로직은 나중에 생각하기로 하고.. pypy로는 통과했다 !! 빙산 문제 보러 가기~~ 아이디어 ⭐ check 함수 -> 빙산이 두 부분 이상으로 나뉘었는지 체크 melt 함수 -> 1년마다 빙산의 각 구역을 물과 닿은 부분만큼 녹임(0까지만 녹임) all_melt 함수 -> 모든 빙산이 녹았는지 체크하는 함수 year = 0으로 초기화하고 시작 계속 빙산이 두 덩어리로 나뉘었는지 체크함. 1) 두 덩어리로 나뉘었으면 year을 출력하고 break 2) 두 덩어리로 나뉘지 않았으면 1-1) 빙산이 다 녹았으면(두 덩어리로 나뉘는..

[백준-파이썬] 2258: 정육점

백준 정육점 문제보러 가기!! 아이디어, 코드 설명 🌱 고기의 무게, 가격을 튜플로 받아서 리스트를 만든다. 가격이 낮은 순서대로, 가격이 같다면 무게가 큰 순서대로 정렬한다. 그리고 그 가격의 고기를 살 때, 얼마나 고기를 얻을 수 있는지(그 가격보다 낮은 고기는 덤으로 얻을 수 있다)를 dp에 저장한다. 고기의 무게, 가격이 저장된 리스트를 쭉~ 돌면서, 얻을 수 있는 고기의 양이 필요한 양 이상이면 그 가격을 비교해서(필요 고기 양이 충족되었을 때 가격이 같은 고기를 여러 개 샀을 수도 있고, 그것보다 가격이 비싼 고기를 하나 샀을 수도 있으니까!) 싼 가격을 min_price에 대입한다. 다 돌고 나서, min_price가 원래 초기화한 값 그대로라면(얻을 수 있는 고기 양이 필요양보다 적었다는 ..

[백준-파이썬] 22252: 정보 상인 호석

문제 보러 가기! 생각보다는 쉬웠다.. 요즘 한번에 통과한 적이 많지 않은데, 오랜만에 한번에 통과해서 기분이 좋다 ~ 😆 아이디어 ❕ 딕셔너리를 활용해서 풀었다! 상황을 나누고, 상황마다 어떤 행동을 해야 할지 생각해서 코딩했다. 숫자 1이 들어왔을 때 이름, K개, 각 가치를 각각 저장함(각각의 가치는 리스트로 저장) 1) 처음 나오는 고릴라이면, 딕셔너리에 저장(key는 고릴라 이름, value는 정보의 가치들을 리스트 형태로) 2) 전에 나왔던 고릴라이면, 딕셔너리에 추가된 정보 부분만 추가함(extend 를 썼다. 알고만 있었는데, 이걸 써보는 건 처음인 것 같다 ㅎㅎ) 숫자 2가 들어왔을 때 이름, B개를 각각 저장 1) 그 고릴라가 있는지 체크(혹시 몰라서) 있으면 그 딕셔너리의 value(..

728x90