🍋 ⚾️ 💻 🎬 🎮

Baekjoon 17

[백준] 1449. 수리공 항승

🗂️ 문제 1449. 수리공 항승📌 PointTwo Pointers테이프 시작 지점과 끝 지점을 이용해서 투 포인터로 풀이한다. https://youngone-kang.tistory.com/30 [Algorithm] Two Pointers (투 포인터)Two Pointers리스트에 순차적으로 접근할 때 두 개의 점의 위치를 기록하면서 처리하는 알고리즘시작점과 끝점 2개의 점으로 접근할 데이터의 범위를 표현할 수 있다. (응용문제) _ 특정한 합을 가youngone-kang.tistory.com📄 코드n, l = map(int,input().split())pipes = list(map(int,input().split()))pipes.sort()# 테이프 시작 위치start = pipes..

coding_test 2025.05.05

[백준] 2805. 나무 자르기 (파이썬)

🗂️ 문제 2805. 나무 자르기📌 PointBinary Search절단기 높이 H를 이진 탐색으로 조정하며, 잘린 나무의 합이 M 이상인지 확인한다. 조건을 만족하면 더 높은 높이도 가능하므로 높이를 올린다. (left = mid + 1)조건을 만족하지 못하면 더 낮은 높이로 내려야 한다. (right = mid - 1) 📄 코드def solution(): N, M = map(int, input().split()) trees = list(map(int, input().split())) def is_enough(height): return sum((tree - height) for tree in trees if tree > height) >= M lef..

coding_test 2025.04.14

[백준] 11660. 구간 합 구하기 5 (파이썬)

🗂️ 문제 11660. 구간 합 구하기 5📌 PointPrefix Sum2차원 배열 board의 누적합을 저장한 새로운 배열 prefix_sum을 만들어서 직사각형 구간의 합을 O(1)에 구할 수 있도록 한다. 📄 코드def solution(): N, M = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(N)] prefix_sum = [[0] * (N+1) for _ in range(N+1)] for i in range(1, N+1): for j in range(1, N+1): prefix_sum[i][j] = ( ..

coding_test 2025.04.14

[백준] 17270. 연예인은 힘들어 (파이썬)

🗂️ 문제 17270. 연예인은 힘들어📌 PointDijkstra그래프에서 여러 개의 노드가 있을 때, 특정 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘한 지점에서 다른 특정 지점까지의 최단 경로를 구해야 하는 경우에 사용한다. 특징음(-)의 간선이 없을 때 정상적으로 동작‘각 노드에 대한 현재까지의 최단 거리’ 정보를 항상 1차원 리스트에 저장하며 리스트를 계속 갱신 작동 방식출발 노드를 설정한다.최단 거리 테이블을 초기화한다.방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다.해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블을 갱신한다.위 과정에서 3번과 4번을 반복한다. 📄 코드import heapq # 우선순위 ..

coding_test 2025.03.27

[백준] 17609. 회문 (파이썬)

🗂️   문제 17609. 회문📌   PointTwo Pointer 문자열이 회문인지 확인하기 위해서는 문자열이 대칭인지를 확인해야 한다.대칭인지를 확인하기 위해 첫 번째 문자와 마지막 문자에 각각 포인터를 두고 중간 문자까지 각 포인터가 가리키는 문자가 같은지 확인한다. https://youngone-kang.tistory.com/30 [Algorithm] Two Pointers (투 포인터)Two Pointers리스트에 순차적으로 접근할 때 두 개의 점의 위치를 기록하면서 처리하는 알고리즘시작점과 끝점 2개의 점으로 접근할 데이터의 범위를 표현할 수 있다. (응용문제) _ 특정한 합을 가youngone-kang.tistory.com     📄   코드def main(): T = int(i..

coding_test 2025.03.25

[백준] 11945. 뜨거운 붕어빵 (파이썬)

🗂️   문제 11945. 뜨거운 붕어빵📌   Point문자열(String) 문자열 반전 슬라이싱(Slicing) 활용 ( [::-1] )text = "hello"reversed_text = text[::-1]print(reversed_text) # 출력: olleh[::-1]은 슬라이싱 문법으로, 시작 인덱스부터 끝 인덱스까지 -1씩 이동하면서 문자열을 생성한다.시간 복잡도 : O(N)     (N : 문자열의 길이) reversed() 함수 활용text = "hello"reversed_text = ''.join(reversed(text))print(reversed_text) # 출력: ollehreversed()는 문자열을 뒤집어주는 iterator를 반환한다.join()으로 문자열을 다시 ..

coding_test 2025.03.08

[백준] 2675. 문자열 반복 (파이썬)

🗂️   문제 2675. 문자열 반복 📌   Point문자열(String) 문자열 순회문자열은 문자의 배열(sequence of characters)이며, 리스트나 튜플처럼 이터러블(iterable) 객체다.S = "ABC"for s in S: print(s)# ResultABC for s in S는 S의 각 문자를 순차적으로 꺼내어 s에 할당한다.따라서, A, B, C를 순서대로 출력한다.     📄   코드def main(): for _ in range(int(input())): R, S = input().split() print(''.join(s * int(R) for s in S))if __name__ == "__main__": main()    ✍..

coding_test 2025.03.07

[백준] 17070. 파이프 옮기기 1 (파이썬)

문제유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다.오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다.파이프는 회전시킬 수 있으며, 아래와 같이 3가지 방향이 가능하다.파이프는 매우 무겁기 때문에, 유현이는 파이프를 밀어서 이동시키려고 한다. 벽에는 새로운 벽지를 발랐기 때문에, 파이프가 벽을 긁으면 안 된다. 즉, 파이프는 항상 빈 칸만 차지해야 한다.파이프를 밀 수 있는 방향은 총 3가지가 ..

coding_test 2024.06.20

[백준] 3019. 테트리스 (파이썬)

문제테트리스는 C열 필드위에서 플레이하는 유명한 게임이다. 필드의 행의 수는 무한하다. 한 번 움직일 때, 아래와 같은 일곱가지 블록 중 하나를 필드에 떨어뜨릴 수 있다.블록을 떨어뜨리기 전에, 플레이어는 블록을 90, 180, 270도 회전시키거나 좌우로 움직일 수 있다. 이때, 블록이 필드를 벗어나지 않으면 된다. 블록을 필드의 바닥이나 이미 채워져있는 칸의 위에 놓여지게 된다.창영이가 하고있는 테트리스는 일반적인 테트리스와 약간 규칙이 다르다. 블록이 떨어졌을 때, 블록과 블록 또는 블록과 바닥 사이에 채워져있지 않은 칸이 생기면 안 된다.예를 들어, 아래와 같이 각 칸의 높이가 2, 1, 1, 1, 0, 1인 경우를 생각해보자. 블록 5번을 떨어뜨리는 방법의 수는 아래와 같이 다섯가지이다.테트리스..

coding_test 2024.05.31

[백준] 1436. 영화감독 숌 (파이썬)

문제666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다.종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 수는 666이고, 그 다음으로 큰 수는 1666, 2666,..

coding_test 2024.05.21
728x90
반응형