본문 바로가기

스터디(beakjoon)98

Kotlin] 백준 11650번 풀이 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 더보기 이 문제는 다중정렬 문제이다. x를 먼저 정렬하고, x값이 같다면 y를 정렬해야하는. 코틀린에는 다중정렬에 대한 매서드가 존재한다. list.sortWith(compareBy) list.sortedWith(compareBy) -ed의 차이는.. 거 다른 정렬함수랑 같이 sortWith는 기존 리스트를 정렬하고, sortedWith는 정렬.. 2024. 3. 14.
Kotlin] 백준 10989번 문제풀이 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 더보기 이 문제는.. 최대 천만개의 숫자를 정렬해야한다. 따라서 평범한 sorting방식을 사용할 수 없다. 왜냐면 sorting은 k개의 요소를 가진 배열의 n번째의 숫자를 1~k까지 훑어서 위치를 정하는 방식이기 때문에 결국 O^2 방식의 시간복잡도를 가진다. 따라서 배열의 갯수가 커질수록 기하급수적으로 커지고, 10^7개의 배열은 결국 10^14번 도는 것이기 때문에, 그리고 이것을 프린팅까지 해야하므로 조건으.. 2024. 3. 13.
Kotlin] 백준 1193번 문제풀이 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 풀이 더보기 (이 풀이는 기록용 풀이입니다 좋은 풀이가 아닙니다 ㅠ) 이 풀이는 시간이 좀 빡빡합니다.. 0.5초 그래서 반복문 내부에서 계속 배열을 만드는 작업을 하면 그만큼 시간을 먹어서 시간초과가 걸리므로 먼저 밖에서 분수의 배열을 만듭니다. 1을 만났을때 평이동을 했다는 증거로 false를 겁니다(그래야만 2를 만났을때 바로 평이동을 합니다). 그리고 가만보면 위로 가는 대각선이 있고, 아래로 가는 대각선이 있는데, 이를 구분하기 위한 변수도 미리 선언해둡니다. 이제 카운트 만큼 반복문을 돌립니다. 먼저 1/1 -> 2/.. 2023. 6. 19.
Kotlin] 백준 2292번 문제풀이 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 풀이 더보기 방을 보면 1번을 기점으로 2번째 줄은 2 ~7까지 6개, 3번줄은 8~19개까지 12개, 4번줄은 20~37개로 6 * n으로 늘어나는걸 볼 수 있다. 따라서, 방 숫자를 받으면 방 숫자를 더하면서 찾아야 한다. 만약 선을 넘었다면 브레이크를 밟아야(?) 하므로 while문을 돌면서 전체 룸 수가 내가 찾아야 할 룸 수보다 많으면 반복문을 탈출하고, 아니면 다음번째 선으로 넘어가기 위해 카운.. 2023. 6. 16.
반응형