분류 전체보기 224

[골드 5] 마법사 상어와 비바라기

https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 구름을 새로 만들 때 시간 복잡도 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ storms가 2500개 있을 수 있다 모든 칸에 한 칸씩 있는 거지 O(2500) 그리고 이제 한칸씩 검사해서 새것을 만드는데 칸마다 검사 O(50*50) ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 기존 것을 매번 검사하는 스킬 O(m * storms.size() * 50 * 50..

🟦/백준 2023.12.04

[골드 2] 2048 (Easy)

https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 옛날의 나: 모으기 : swap 합치기 : 합치고 한 칸씩 당김 지금의 나: 모으면서 합치기 예원: 합치기이후 모으기 1. 모으면서 합치기 작업이 너무 비효율적 2. 모으면서 합치기 로직이 어려움 3. 합치고 모으니 제일 편해 보인다 절었던 이유! 0일 때 로직 처리가 적절하지 않았음 ex) 최초 숫자 찾고 진행하다가 0을 만나면 그냥 현재 자리 차지 ex) 계속 진행..

🟦/백준 2023.11.29

[골드 1] 달이 차오른다, 가자.

https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 처음에 dfs로 잘못 접근함 돌아올 수가 없음 원숭이, 벽 부수기랑 비슷한 문제 bfs인데 큐에 들어가는 Data class가 다른 경우 같은 지점이라고 해도 가진 key값이 최초이면 queue에 넣어줘야 함 문제점 1. 문제 똑바로 안 읽어서 key를 사용하면 사라지는 줄 암 2. visited의 자료형을 뭘 쓸지 엄청 오래 고민함 참조 객체는 객체를 그대로 넣으면..

🟦/백준 2023.10.05

[골드 5] 강의실 배정

https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 옛날 회의실 배정 기억나서 그렇게 풀었다가 틀림 문제가 이해가 그냥 ㅈㄴ 안 됨 무슨 말인지 모르겠음 아 그니까 모든 시간을 검사해서 겹치는 max가 몇 개인지 구하는 문제구나 근데 모든 시간을 검사하면 당연히 시간초과 나겠지? 일단 보니까 시작 시간으로 정렬 왜? 시작한 시간부터 이제 강의실 하나를 차지하는 거야 그럼 다음 시간을 맞이했을 때 쓰던 강의실들 끝났으면 빼줘야지? 그래서 pQ로 풀어야 한다~ import java.util.*; i..

🟦/백준 2023.09.21

[골드 4] 수 묶기

https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 옛날에 풀었던 문제이다. 경우의 수를 이번엔 정말 깔끔하게 나눠보자 자 -3 -2 -1 0 1 2 3 마이너스 부분에서 최소 2개 무조건 묶는다 1개 혼자남아? 0 이 있으면 곱하고 아니면 눈물을 머금고 더해 플러스 부분에서 최대 2개 무조건 묶어 근데 내가 여기서 한 번 틀림 1은 절대 묶지 마 손해야 그냥 더해야 함 import java.util.*; import java.io.*; publ..

🟦/백준 2023.09.21