-
백준 10813 공 바꾸기 - [알고리즘] [kotlin]알고리즘/백준 2023. 7. 25. 20:46
문제 내용

문제 분석
1. N개의 바구니가 있다.
2. 각 바구니는 1~N의 번호를 가지고 각 바구니는 바구니 번호가 적힌 공이 들어있다.
3. 들어있는 공을 M번 바꾼다.
아이디어
1. 배열을 생성하며 각 index에 맞는 값을 넣는다.
2. 이때 1~N번을 가지므로 n+1 크기의 배열을 생성한다.
또한, 0번 index는 무시한다.
3. 입력받은 대로 값을 swap한다.
풀이
fun main() { // 입력이 최대 100개이므로 빠른 입출력을 위해 bufferedReader 사용 val br = System.`in`.bufferedReader() // 한줄 입력을 받아 공백 기준으로 배열화 시키는 부분을 지역함수로 구성 fun readToArr() = br.readLine().split(' ').map{ it.toInt() } // n, m val input = readToArr() val n = input[0] val m = input[1] // index로 초기 값 설정 (초기 바구니 번호 == 들어있는 공 번호) // 각 index는 1~N번 바구니를 표현함, 0번 바구니는 무시.. val buckets = IntArray(n+1){ it } fun swap(a: Int, b: Int, arr: IntArray) { val tmp = arr[a] arr[a] = arr[b] arr[b] = tmp } // m번 반복 repeat(m) { val c = readToArr() swap(c[0],c[1],buckets) } br.close() val sb = StringBuilder() for(i in 1 until buckets.size) { sb.append(buckets[i]).append(' ') } // 마지막 공백 제거 sb.dropLast(1) print(sb.toString()) }'알고리즘 > 백준' 카테고리의 다른 글
백준 3003 킹, 퀸, 룩, 비숍, 나이트, 폰 - [알고리즘] [kotlin] (0) 2023.07.31 백준 14425 문자열 집합 - [알고리즘] [이분탐색] [hashMap][kotlin] (1) 2023.07.27 백준 1152 단어의 개수 - [알고리즘] [kotlin] (0) 2023.07.26 백준 10811 바구니 뒤집기 - [알고리즘] [코틀린] (0) 2023.07.26 백준 2504 괄호의 값 - [알고리즘] [kotlin] (0) 2023.07.25