반응형

전체 글 359

[백준 알고리즘] 20006번: 랭킹전 대기열 (Python)

https://www.acmicpc.net/problem/20006 20006번: 랭킹전 대기열 모든 생성된 방에 대해서 게임의 시작 유무와 방에 들어있는 플레이어들의 레벨과 아이디를 출력한다. 시작 유무와 플레이어의 정보들은 줄 바꿈으로 구분되며 레벨과 아이디는 한 줄에서 공백 www.acmicpc.net 소스코드 풀이 ★ 주어진 조건에 부합하지 않을 경우 어떻게 방을 생성해줄지에 대해 조금 생각했던 문제였습니다 ! ★ 자세한 부분은 주석을 참고하시면 될 거 같습니당 :)

Algorithm/백준 2023.11.06

[백준 알고리즘] 1138번: 한 줄로 서기 (Python)

https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 소스코드 풀이 ★ 입력으로 키가 1인 사람부터 n인 사람까지 자신보다 앞에 있으면서, 키가 더 큰 사람의 수가 주어집니다 ! 그렇기에 키가 가장 큰 사람부터 자신 앞에 몇명이 존재하는지를 생각해보면 됩니다. 이때 insert() 함수를 사용하게 되는데, insert함수 insert(a,b)는 인덱스 번호 a자리에 b를 삽입시키는 기능을 가지고 있습니다. ★ 입력을 예시로 들었을 때, 2 1..

Algorithm/백준 2023.11.06

[백준 알고리즘] 20551번: Sort 마스터 배지훈의 후계자 (Python)

https://www.acmicpc.net/problem/20551 20551번: Sort 마스터 배지훈의 후계자 지훈이는 Sort 마스터다. 오랫동안 Sort 마스터 자리를 지켜온 지훈이는 이제 마스터 자리를 후계자에게 물려주려고 한다. 수많은 제자들 중에 후계자를 고르기 위해서 지훈이는 제자들에게 문제 www.acmicpc.net 소스코드 풀이 ★ 이분탐색을 연습하는 중이었는데, 실버4의 난이도를 가지고 있어서 이분탐색을 활용하는 전형적인 문제라고 생각했습니다 ! 하지만 3~4번의 시간초과를 겪고 구글링 해봤는데, lower bound를 구현하여 해결하는 문제였습니다 ! 문제를 풀면서 경계값을 찾는 lower bound와 upper bound에 대해서 공부할 수 있는 기회였습니다. ★ 일반적인 이분탐..

Algorithm/백준 2023.10.31

[백준 알고리즘] 1655번: 가운데를 말해요 (Python)

https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 소스코드 풀이 ★ 중간값을 찾기 위해 2개의 리스트를 만들어줍니다. 왼쪽, 오른쪽 리스트를 만들어주는데, 왼쪽 리스트는 최대힙으로, 오른쪽 리스트는 최소힙으로 만들어줍니다 ! ★ 왼쪽 리스트를 최대힙으로 만드는 이유는 최소힙의 경우, 가장 작은 수부터 정렬되게 됩니다. 하지만 최대힙일 경우 가장 큰 수부터 정렬되기 때문에 왼쪽의 가장 큰수는 왼쪽의 나머지 수들보다 크고, 오른쪽의 ..

Algorithm/백준 2023.10.27

[백준 알고리즘] 2231번: 분해합 (Python)

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 소스코드 풀이 ★ 위와 같은 풀이방식은 1부터 n까지의 수 전체를 확인해봐야 해서 비효율적이라 통과하지 못할 줄 알았는데, 통과하더라구요 ! 알고리즘 분류가 브루트포스여서 가능한 거 같습니다 :)

Algorithm/백준 2023.10.26

[백준 알고리즘] 14940번: 쉬운 최단거리 (Python, BFS)

https://www.acmicpc.net/problem/14940 14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.acmicpc.net 소스코드 풀이 ★ 전형적인 BFS 문제입니다. 목표지점이라고 해서, 거기까지 가는 거리를 구하는 것이 아닌 목표지점으로부터 각각의 땅이 얼마만큼 떨어진 위치에 있는지 확인해주면 됩니다 :) ★ 거리를 측정하는 그래프인 visited 배열을 -1로 초기화 해줍니다. -1로 초기화하는 이유는 원래 갈 수 있는 땅인 부분 중에서 도달할 수 없는 위치는 -1을..

Algorithm/백준 2023.10.23

[백준 알고리즘] 1253번: 좋다 (Python)

https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 소스코드 풀이 ★ 문제를 처음 읽었을 때, 투 포인터를 사용하여 풀 수 있는 문제라는 것을 알고 시도하였습니다 ! 하지만 67%에서 무려 5번의 실패를 겪고 정답을 맞출 수 있었는데요, 가장 중요한 부분은 문제를 꼼꼼히 읽는 것이라고 생각합니다. ★ 문제 첫 줄을 보면 n개의 수 중 어떤 수가 다른 수 두개의 합으로 나타낼 수 있다면 그 수를 "좋다"고 합니다. 여기서 주목해야 할 부분은 어떤 수를 "다른 두 수"로 만들어야..

Algorithm/백준 2023.10.23

[백준 알고리즘] 24479번: 알고리즘 수업 - 깊이우선탐색 1 (Python, DFS)

https://www.acmicpc.net/problem/24479 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 소스코드 풀이 ★ 전형적인 DFS 문제입니다. 한가지 주의해야 할 점이 있다면 방문하는 정점을 출력하는 것이 아닌, 정점을 방문하는 순서 즉, 방문 순서를 출력해야 합니다 ! ★ 양방향 간선이 주어졌기 때문에 for문을 사용하여 정점에서 정점으로 이동하는 모든 경우를 확인해줍니다. ★ 정점을 방문할 때는 오름차순으로 방문해야..

Algorithm/백준 2023.10.20
반응형