반응형

전체 글 366

[백준 알고리즘] 1743번: 음식물 피하기 (Python, BFS)

https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 소스코드 풀이 ★ 주변에 있는 음식물들을 탐색하여 가장 큰 음식물를 찾아내는 전형적인 BFS 문제였던 거 같습니다 ! ★ 그래프를 만들 때 시작을 0,0에서 시작하기 때문에 입력받는 x,y 좌표에 각각 -1을 해준 뒤 음식물의 위치라는 것을 1로 표시해줍니다. ★ 그래프를 탐색하면서 해당 좌표가 1일때, 즉 음식물일 때 주변을 탐색하는 BFS를 실행하게 됩..

Algorithm/백준 2023.10.04

[백준 알고리즘] 2910번: 빈도 정렬 (Python)

https://www.acmicpc.net/problem/2910 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net 소스코드 풀이 ★ 딕셔너리를 만들고, 메세지 수열의 수를 key로 잡고 빈도를 계산해줬습니다. ★ 빈도 수가 가장 높은 수부터 출력해줘야 하기 때문에 딕셔너리를 lambda 함수를 통해 value를 기준으로 내림차순 정렬해줬습니다. ★ 이후 정렬한 리스트의 값들을 돌면서 빈도수 만큼 key를 출력해줬습니다 !

Algorithm/백준 2023.10.04

[백준 알고리즘] 25192번: 인사성 밝은 곰곰이 (Python)

https://www.acmicpc.net/problem/25192 25192번: 인사성 밝은 곰곰이 첫번째 새로운 사람이 들어온 뒤 pjshwa, chansol, chogahui05은 모두 곰곰티콘으로 인사했다. 두번째 새로운 사람이 들어온 뒤 pjshwa와 chansol은 다시 곰곰티콘으로 인사했다. www.acmicpc.net 소스코드 풀이 ★ set 자료구조를 사용한 이유는 중복 값이 배열에 들어갈 수 없기 때문에 조건문을 따로 설정해주지 않더라도 곰곰티콘을 사용한 경우 즉, 닉네임이 처음 나오는 경우만 확인할 수 있습니다. ★ flag 변수를 사용하여 flag가 True일 때는 닉네임을 set에 추가해주었고, False일 경우에는 추가하지 않았습니다 ! ★ 'ENTER'이 입력된 이후로는 들어오..

Algorithm/백준 2023.10.02

[백준 알고리즘] 1926번: 그림 (Python, BFS)

https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 소스코드 풀이 ★ 해당 좌표가 1이라면 상하좌우를 탐색하며 같은 1을 찾아나가는 전형적인 BFS 문제입니다. ★ 이중 반복문을 돌면서 해당 좌표의 값이 1이라면 그림이 그려져있는 것이기 때문에 BFS를 시작해줍니다. ★ 해당 좌표를 중복으로 탐색하지 않기 위해서 그 값을 1에서 0으로 바꿔줍니다. 그 후 상하좌우를 탐색하며 주변에 1을 가지고 있는 값들을 찾아갑니다. 이 때 값을 찾아서 다시 dq에 저..

Algorithm/백준 2023.09.28

[백준 알고리즘] 1202번: 보석 도둑 (Python)

https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 소스코드 풀이 ★ 보석 가격의 합을 최대한으로 하기 위해서는 우선순위 큐의 최대힙, 최소힙을 모두 이용해야 합니다. ★ 입력받은 보석의 정보를 무게를 기준으로 최소힙 형태로 만들어줍니다. ★ 입력받은 가방의 무게는 오름차순 정렬해주는데, 그 이유는 가방의 무게보다 작거나 같은 보석 무게 중 최댓값이 필요하기 때문입니다. 예를 들어 보석 ..

Algorithm/백준 2023.08.23

[백준 알고리즘] 19638번: 센티와 마법의 뿅망치 (Python)

https://www.acmicpc.net/problem/19638 19638번: 센티와 마법의 뿅망치 마법의 뿅망치를 센티의 전략대로 이용하여 거인의 나라의 모든 거인이 센티보다 키가 작도록 할 수 있는 경우, 첫 번째 줄에 YES를 출력하고, 두 번째 줄에 마법의 뿅망치를 최소로 사용한 횟수 www.acmicpc.net 소스코드 풀이 ★ 가장 키가 큰 거인의 키부터 반토막을 내기 위해 최대힙을 만들어줍니다. ★ 이후 반복문을 도는데, 키가 가장 큰 거인의 키가 센티의 키보다 크거나 같을 때를 보면, 1인 경우에는 더이상 쪼갤 수 없으며 최대힙인데도 가장 큰 거인의 키가 1이라는 것은 양의 정수 중 가장 작은 경우이기 때문에 break를 통해 반복문을 바로 빠져나옵니다. 이러한 코드가 없다면 예제로 주..

Algorithm/백준 2023.08.22

[백준 알고리즘] 1904번: 01타일 (Python)

https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 소스코드 풀이 ★ 문제 자체는 쉬운 거 같은데 왜 정답률이 낮을까라는 의문이 있었는데, 메모리 초과를 2번이나 확인하고서 깨달았던 문제였습니다 ! ★ 입력값이 1,000,000까지 들어오기 때문에 엄청나게 큰 메모리가 dp 배열에 들어가게 됩니다. 그렇기에 dp 배열에 값을 넣기 전에 15746으로 나눈 나머지의 값을 그때마다 저장하여 메모리의 크기를 낮춰줘야 합니다 !

Algorithm/백준 2023.08.22
반응형