파이썬

🧩 Problem Solving/[백준]

[백준] 28286 재채점을 기다리는 중 (python 파이썬)

https://www.acmicpc.net/problem/28286 28286번: 재채점을 기다리는 중 UCPC고등학교에 다니는 민규는 최근에 기말고사를 치게 되었다. 기말고사는 $N$문제로 이루어져 있고, 각 문제는 보기가 1 이상 5 이하의 정수로 이루어진 객관식 문제이다. 시간이 지나 학교에서 www.acmicpc.net 처음 문제를 읽었을 때는 시간을 어떻게 줄일까 고민했는데, 입력값이 매우 작다.(max(N) = 20, max(K) = 3) 무난한 문제. 백트래킹을 사용해서 최대 개수를 찾아준다. 아이디어 1. pull: 번호들을 왼쪽으로 당기는 기능. rotate를 써서 구현했다. for문으로 구현해도 된다. 2. push: 번호를 오른쪽으로 미는 기능. pull과 마찬가지로 rotate를 써..

🧩 Problem Solving/[백준]

[백준] 28298 더 흔한 타일 색칠 문제 (python 파이썬)

https://www.acmicpc.net/problem/28298 28298번: 더 흔한 타일 색칠 문제 첫째 줄에 세 정수 $N$, $M$, $K$가 공백으로 구분되어 주어진다. $(1\le N,M,K\le 500;$ $N,M$은 $K$의 배수이다$)$ 다음 $N$개의 줄에는 타일의 $i$행 색상 배치를 의미하는 길이 $M$의 문자열 $d_i$가 주어진다. www.acmicpc.net 시간 초과가 생긴 문제. 이번엔 입력값 제한을 보고 시간에 맞게 로직을 짰다고 생각했는데 시간초과가 발생했다. 로직을 조금 수정하니까 통과했다. 왜 그런지 생각해 보니 원인을 찾을 수 있었다. 중간에 리스트에서 개수가 가장 많은 요소를 출력하는 메서드가 필요했다. 많은 방법이 있지만 나는 코드를 간결하게 작성하고 싶어 ..

🧩 Problem Solving/[백준]

[백준] 28250 이브, 프시케 그리고 푸른 MEX의 아내 (python 파이썬)

https://www.acmicpc.net/problem/28250 28250번: 이브, 프시케 그리고 푸른 MEX의 아내 첫째 줄에 정수 $N$이 주어진다. ($2 \le N \le 200\,000$) 둘째 줄에 $N$개의 정수 $A_1, A_2, \dots, A_N$이 공백으로 구분되어 주어진다. ($0 \le A_i \le 100\,000$) www.acmicpc.net 문제 이름이 특이해서 풀어본 문제. 실2라고 얕잡아봤다가 끔찍한 결과가 나왔다. 실제 코테였다면 풀었을지 장담 못하겠다. 꼭 입력값 제한을 보면서 시간을 추측하는 습관을 들이자. 여담이지만 코테 환경을 상상하며 문제를 푸는 건 도움이 되는 거 같다. 아이디어 1. 이중 for문 실패 수식을 보고 무식하게 이중 for으로 구현했다가 ..

🧩 Problem Solving/[백준]

[백준] 28017 게임을 클리어하자 (python 파이썬)

https://www.acmicpc.net/problem/28017 28017번: 게임을 클리어하자 첫째 줄에 산지니가 게임을 몇 회차를 하는지 나타내는 수 $N$과 무기의 종류 $M$이 공백으로 구분되어 주어진다. $(2 \le N, M \le 500)$ 둘째 줄부터 $N$개의 줄에는 각 무기마다 게임을 클리어하는데 www.acmicpc.net 대회 초반에 삽집하다가 DP인걸 깨닫고 해결했다. pypy로 제출, 이후 python으로 다시 제출. 아이디어 1. 반복문 단순 반복문으로 작성했다 실패했다. 2. DP n회차의 각 무기마다 올 수 있는 시간을 저장하면 된다. 위 이미지처럼 이전 행에 있는 값 중 최솟값을 다음 행에 더해가며 업데이트하면 된다. 최종적으로 마지막 행의 최솟값을 출력하면 된다. 전..

🧩 Problem Solving/[백준]

[백준] 1759 암호만들기 (python 파이썬)

https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 처음에는 itertools 라이브러리를 사용하여 순열을 구하고, 각 순열마다 검사하는 방법으로 했는데 시간초과 되었다. 생각해 보면 최대 경우가 15P15까지 나오므로 이 방법은 당연히 아니었다. 암호를 판별하는 방식이 아닌 처음부터 암호를 조건에 맞게 만드는 방법으로 문제를 풀어 해결하였다. 아이디어 1. 암호 조건 암호에 있는 알파벳을 증가하는 순서(aescend)로 배열되었다. 암호에는 모음 1개..

🧩 Problem Solving/[백준]

[백준] 2583 영역 구하기(python 파이썬)

https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 그래프 탐색하는 문제. 비슷한 유형의 문제를 풀어봤으면 쉬운 문제. 아이디어 1. 모눈종이 M*N 크기의 2차원 리스트로 모눈종이를 나타냈다. 주어진 직사각형 좌표에 따라 직사각형을 표현해준다. 1은 직사각형, 0은 빈공간을 나타낸다. 문제에서는 좌표가 왼쪽 아래가 원점(0, 0)이지만, 리스트는 왼쪽 위가 원점이다. 어차피 가로축에 대해 대칭이므로 문제에서 요구한 값을 구하는..

🧩 Problem Solving/[백준]

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

https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 구간 합 구하기 2차원 버전 아이디어 1. 누적 합 사용 구간 합 구하기 4와 유사하게 풀었다 먼저 (0 ,0)에서 (x , y)까지의 합을 arr [x][y]에 저장한다. 그럼 아래와 같은 리스트를 만들 수 있다. 이걸 사용해서 구간 합을 구하면 된다. 예를 들어 (1, 1)에서 (2, 3)까지 구하려면(문제에서는 2,2 ~ 3,4) arr [2][3]..

🧩 Problem Solving/[백준]

[백준] 10942 팰린드롬? (python 파이썬)

https://www.acmicpc.net/problem/10942 10942번: 팰린드롬? 총 M개의 줄에 걸쳐 홍준이의 질문에 대한 명우의 답을 입력으로 주어진 순서에 따라서 출력한다. 팰린드롬인 경우에는 1, 아닌 경우에는 0을 출력한다. www.acmicpc.net 배열에서 i부터 j까지가 팰린드롬인지 아닌지 여러 번 확인하는 문제. 아이디어 1. dp 간단하게 리스트 슬라이싱으로는 시간 초과가 나서 dp를 사용 i번째부터 j까지의 수가 팰린드롬인지 확인한 결과를 저장하기 위해 이차원 리스트를 사용하기로 결정했다. 2. 점화식 먼저 무조건 팰린드롬인 i부터 i까지의 수는 1로 저장해둔다. 그리고 i번째 수와 i + 1번째 수가 같으면 팰린드롬이니까 이것도 1로 저장. 점화식은 이미 팰린드롬인 수 ..

제봉아
'파이썬' 태그의 글 목록 (4 Page)