728x90

전체 글 306

[백준 2573번] 빙산 (Python)

> 파이썬, 구현, 그래프 이론, 그래프 탐색, 너비 우선 탐색, 깊이 우선 탐색 📖 문제 : 빙산 (Python) 지구 온난화로 인하여 북극의 빙산이 녹고 있다. 빙산을 그림 1과 같이 2차원 배열에 표시한다고 하자. 빙산의 각 부분별 높이 정보는 배열의 각 칸에 양의 정수로 저장된다. 빙산 이외의 바다에 해당되는 칸에는 0이 저장된다. 그림 1에서 빈칸은 모두 0으로 채워져 있다고 생각한다. 2 4 5 3 3 2 5 2 7 6 2 4 그림 1. 행의 개수가 5이고 열의 개수가 7인 2차원 배열에 저장된 빙산의 높이 정보 빙산의 높이는 바닷물에 많이 접해있는 부분에서 더 빨리 줄어들기 때문에, 배열에서 빙산의 각 부분에 해당되는 칸에 있는 높이는 일년마다 그 칸에 동서남북 네 방향으로 붙어있는 0이 저..

[백준 2812번] 크게 만들기 (Python)

> 파이썬, 자료 구조, 그리디 알고리즘, 스택 📖 문제 : 크게 만들기 (Python) N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ K < N ≤ 500,000) 둘째 줄에 N자리 숫자가 주어진다. 이 수는 0으로 시작하지 않는다. 출력 입력으로 주어진 숫자에서 K개를 지웠을 때 얻을 수 있는 가장 큰 수를 출력한다. 예제 입력 1 4 2 1924 예제 출력 1 94 내 코드 N, K = map(int, input().split()) num = list(map(int, input())) stack = [num[0]] for i in range(1, len(num)): while len(s..

[백준 9251번] LCS (Python)

> 파이썬, 문자열, 다이나믹 프로그래밍 📖 문제 : LCS (Python) LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 입력 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 출력 첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. 예제 입력 1 ACAYKP CAPCAK 예제 출력 1 4 내 코드 a = input() b = input() board = [[0] * (len(b) + 1) for _ in range(le..

[백준 15903번] 카드 합체 놀이 (Python)

> 파이썬, 자료 구조, 그리디 알고리즘, 우선순위 큐 📖 문제 : 카드 합체 놀이 (Python) 석환이는 아기다. 아기 석환이는 자연수가 쓰여져있는 카드를 갖고 다양한 놀이를 하며 노는 것을 좋아한다. 오늘 아기 석환이는 무슨 놀이를 하고 있을까? 바로 카드 합체 놀이이다! 아기 석환이는 자연수가 쓰여진 카드를 n장 갖고 있다. 처음에 i번 카드엔 ai가 쓰여있다. 카드 합체 놀이는 이 카드들을 합체하며 노는 놀이이다. 카드 합체는 다음과 같은 과정으로 이루어진다. x번 카드와 y번 카드를 골라 그 두 장에 쓰여진 수를 더한 값을 계산한다. (x ≠ y) 계산한 값을 x번 카드와 y번 카드 두 장 모두에 덮어 쓴다. 이 카드 합체를 총 m번 하면 놀이가 끝난다. m번의 합체를 모두 끝낸 뒤, n장의 ..

[백준 2493번] 탑 (Python)

> 파이썬, 자료 구조, 스택 📖 문제 : 탑 (Python) KOI 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다. 실험을 위하여 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고, 각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사하고, 탑의 기둥 모두에는 레이저 신호를 수신하는 장치가 설치되어 있다. 하나의 탑에서 발사된 레이저 신호는 가장 먼저 만나는 단 하나의 탑에서만 수신이 가능하다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 개의 탑이 수평 직선에 일렬로 서 있고, 모든 탑에서는 주어진 탑 순서의 반대 방향(왼쪽 방향)..

[백준 1263번] 시간 관리 (Python)

> 파이썬, 그리디 알고리즘, 정렬 📖 문제 : 시간 관리 (Python) 진영이는 캠프 조교를 온 후 효율적으로 시간 관리를 해야 한다는 것을 깨달았다. 진영이는 하루에 해야 할 일이 총 N개가 있고 이 일들을 편하게 1번부터 N번까지 차례대로 번호를 붙였다. 진영이는 시간을 효율적으로 관리하기 위해, 할 일들에 대해 끝내야할 시간과 걸리는 시간을 적은 명단을 만들었다. 즉, 이 명단은 i번째 일은 일을 처리하는데 정확히 Ti 시간이 걸리고 Si 시 내에 이 일을 처리하여야 한다는 것을 담고 있다. 진영이는 0시부터 활동을 시작할 수 있고, 두 개 이상의 일을 같은 시간에 처리할 수 없다. 진영이가 바라는 점은 최대한 늦잠을 자는 것이다. 문제는 이러한 진영이를 도와 일들은 모두 마감시간 내에 처리할 ..

[VS Code] 유용한 단축키

🍇 사이드 바 열고/닫기 Mac : Cmd + B Windows : Ctrl + B 🍇 빠른 열기(파일, 기호 탐색) Mac : Cmd + P Windows : Ctrl + P 🍇 모든 파일 저장(변경된 모든 파일 저장) Mac : Cmd + Alt(Opt) + S Windows : Ctrl + Alt + S 🍇 에디터의 모든 명령에 접근 Mac : Cmd + Shift + P Windows : Ctrl + Shift + P 🍇 찾기(단어, 글자 등등 검색) Mac : Cmd + F Windows : Ctrl + F 🍇 찾기(검색)/ 바꾸기 Mac : Cmd + Alt(Opt) + F Windows : Ctrl + H 🍇 줄 위로 이동 Mac : Alt(Opt) + Up Windows : Alt + Up..

Web 2023.08.09

[VS Code] 유용한 확장 프로그램

🐻 소개해드릴 확장 프로그램 4개 ! 1) Korean Language Pack for Visual Studio Code (메뉴 한글화) 2) Beautify (코드 정리 단축키 설정) 3) Auto Rename Tag (자동 태그 이름 변경) 4) Live Server (브라우저에 코드 결과물 띄우기) 일단 왼쪽 메뉴에서 아래의 이미지처럼 가장 밑에 사각형이 4개가 있는 메뉴를 통해 확장 프로그램을 설치 할 수 있습니다. 아래에 소개해드릴 확장 프로그램들은 아래의 검색창에서 검색하셔서 설치하시면 됩니다. 1. Korean Language Pack for Visual Studio Code 🍉 영어로 되어있는 메뉴바의 메뉴들을 한글로 바꿀 수 있습니다. 2) Beautify 🍉 자동 코드 정리하기 밑줄이 ..

Web 2023.08.09

[백준 7576번] 토마토 (Python)

> 파이썬, 그리디 알고리즘 📖 문제 : 토마토 (Python) 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 ..

[백준 1715번] 카드 정렬하기 (Python) (heapq)

> 파이썬, 자료 구조, 그리디 알고리즘, 우선순위 큐 📖 문제 : 카드 정렬하기 (Python) 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 4..

728x90