본문 바로가기

BOJ

[Python][백준 16161][이분 탐색] 가장 긴 증가하는 팰린드롬 부분 수열 - 컴도리돌이 16161번: 가장 긴 증가하는 팰린드롬 부분수열 팰린드롬 수열이란 앞에서부터 읽을 때와 뒤에서부터 읽을 때 똑같은 수열을 말한다. 수열 {13, 25, 3, 25, 13}, {9, 5, 5, 9}는 팰린드롬이고, {1, 2, 3, 4, 5, 6, 7, 6}, {1, 2, 5, 4, 2}, {1, 1, 3, 2, 4}는 팰린드 www.acmicpc.net 풀이과정 해당 문제를 푸는데 거의 1시간 반을 써서 해결했다. 🤣🤣 그것도 아이디어가 생각나지 않아서 다른 분의 코드를 확인하면서 해결했다. 이 문제의 핵심은 "투 포인터"로 문제를 해결해야 한다. 1. 기준점 인덱스로부터 증가하는 팰린드롬의 길이를 구해야 한다. 2. 팰린드롬의 길이는 최소 1이 될 수도 있다. 3. start, end라는 배열의 인덱.. 더보기
[Python][백준 2176][다익스트라,DP] 합리적인 이동경로 - 컴도리돌이 2176번: 합리적인 이동경로 첫째 줄에 정점의 개수 N(1 < N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 100,000이 주어진다. 다음 M개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 길이 www.acmicpc.net 풀이 과정 DP를 최단 경로를 탐색하기 위하여 사용된다. dp의 i번째 인덱스는 출발하는 합리적인 이동경로의 수를 의미하며, 도착점 2번 노드부터 탐색을 시작한다. 각 정점까지의 최단경로를 갱신하는 과정에서 현재 노드까지 최단 경로의 길이가 다음 노드까지 최단 경로의 길이보다 짧을 경우, 다음 노드와 현재 노드 사이에 합리적인 이동 경로가 존재한다는 뜻이다. 풀이 과정 import sys,heapq; input =.. 더보기
[Python][백준 10282][다익스트라] 해킹 - 컴도리돌이 10282번: 해킹 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염되면 www.acmicpc.net 풀이 과정 해당 문제는 정말 대표적인 다익스트라 문제인 거 같다.. 문제를 해결하는데 몇 분도 안 걸린 기분 좋은 문제였다. 😊 1. 입력받은 T만큼 반복문을 돌린다. 2. 입력받은 컴퓨터 수(n), 의존성 관계(d), 감염된 컴퓨터 번호(c)를 입력받는다. 3. 필자는 의존성 관계를 표현하는 2차원 배열을 computers 이름으로 할당해주었다. 그리고 감염된 컴퓨터가 있을 경우 해당 컴퓨터가 몇 초 후에 감염되는지 확인하기 위하여 infection이라는 이름으로 .. 더보기
[Python][백준 25239][문자열, 구현] 가희와 카오스 파풀라투스- 컴도리돌이 25239번: 가희와 카오스 파풀라투스 차원의 균열 패턴이 끝난 후, 파풀라투스가 회복하는 체력이 h%라고 할 때, h를 출력해 주세요. www.acmicpc.net 풀이 과정 1. 현재 시간을 hh, mm으로 받고 정수형으로 저장하였다. 2. 영역의 값을 num 배열에 받고, 영역에 접근하였는지 안 했는지 확인하기 위하여 크기가 6인 bool 형식의 배열을 "seal"로 초기화해주었다. 3. 이벤트 수(L) 만큼 반복문을 돌린다. 3-1. 만약 입력받은 s.T 가 1분이 지났다면 반복문을 종료시켰다. 3-2. 입력받은 명령어가 "^" 이면 현재 시간이 가리키는 영역을 False로 변경해준다. 3-3. 입력받은 명령어가 시간이 포함될 경우 3-3-1. 명령어에 "MIN" 이 포함될 경우 : 현재 분(mm.. 더보기
[Python][백준 25238][수학] 가희와 방어율 무시 - 컴도리돌이 25238번: 가희와 방어율 무시 메이플스토리 몬스터는 방어율 수치가 있습니다. 이 방어율 수치의 일정 %를 무시하는 것을 방무라고 합니다. 유저는 아이템을 사거나, 특정한 스킬 레벨을 올려서 방무 수치를 올릴 수 있습니 www.acmicpc.net 풀이 과정 1. 주어진 방어율과 방무를 각각 a, b로 입력 받았다. 2. 몬스터의 방어율 수치가 100보다 크거나 같으면 대미지를 줄 수 없다. 3. "방어율 - (방무 / 100 * 방어율) = 체감하는 방어율 수치 " 이 100 이상 일 경우 0을 출력하고 아닐 경우 1을 출력하였다. 풀이 코드 `a,b = map(int,input().split()) ; print(0 if (a - (b/100 * a)) >= 100.0 else 1) 더보기
[Python][백준 25240][해시, 문자열] 가희와 파일 탐색기2 - 컴도리돌이 25240번: 가희와 파일 탐색기 2 Q개의 질문에 대해, 연산이 성공하면 1을 실패하면 0을 출력해 주세요. 각 질문에 대한 답은 한 줄에 하나씩 출력해 주세요. www.acmicpc.net 풀이 과정 이 문제는 정말 맞왜틀을 외치면서 풀었던 문제인 거 같다... 7번이나 틀렸던 문제😂😂 문제를 제대로 읽지 않아서 중요한 부분을 놓쳤다. " 유저가 속한 그룹들에 대한 정보에 USER_NAME이 주어지지 않더라도 그룹 이름이 USER_NAME인 그룹에 속함에 주의하세요." 유저에 대한 정보의 개수 U만큼 user_name과 user_group이 입력되는데, user_name이 동일한 이름을 가진 그룹에 속하다는 것을 놓쳐버렸다.. 🤦‍♂️🤦‍♂️ 1. 필자는 그룹에 어떤 유저가 포함되어 있는지, 그룹 이.. 더보기