본문 바로가기

코딩테스트8

[백준] 10811 바구니 뒤집기 - Kotlin(코틀린) 10811번 바구니 뒤집기 이전에 포스팅한 10810 번과 유사하지만 이번엔 입력을 받은 start 와 end 사이의 배열을 뒤집는 문제이다. 다행히 코틀린에는 reverse 라는 Array 의 확장함수가 있어 쉽게 해결할 수 있다. 문제 분석바구니의 갯수는 N개, 각 바구니에는 1 부터 N 까지 번호가 매겨져 있다고 했다. 이 번호는 가장 왼쪽이 1, 가장 오른쪽이 N 이다. 그렇다면, 바구니를 표현할 배열을 생성하고, 초기값을 1..2..3..N 이런식으로 지정해 줄 수 있다. M 번 바구니의 순서를 뒤집을 것이므로 M 번 반복할 것이고, 입력으로 뒤집을 범위 i, j를 받는다. 조건을 보면, N, M 은 정수로 표현이 가능하고, i 는 j 보다 작거나 같으므로 별도의 예외처리를 해주지 않아도 괜찮다.. 2025. 4. 14.
[백준] 10810번 공 넣기 - Kotlin(코틀린) 10810번 공 넣기문제 분석바구니의 갯수는 N, 각각 바구니에서는 1번부터 N 번까지 번호가 매겨져 있다고 했다.바구니들을 배열로 지정했을때 배열의 크기는 N, 바구니의 번호는 index + 1 형태이다.또한 공이 들어있지 않은 바구니는 0을 출력하므로 바구니 배열의 초기값을 0으로 초기화 시켜줄 것이다. 바구니에는 공을 1개만 넣을 수 있다고 했기 때문에 공을 넣을때 바구니 배열 내의 값을 덮어씌워주면 된다. M 번 공을 넣는다고 했기 때문에 M 번 반복해서 공을 넣는 작업을 진행해야 하고, 바구니 범위에 동일한 번호의 공을 넣는다고 하니배열 내 특정 범위에 모두 같은 값을 넣어주는 작업을 진행하게 될 것이다. N의 수 범위와 M 의 수 범위는 Int 형으로 표현할 수 있을 것이고, 공을 넣는 방법 .. 2025. 4. 11.
[백준] 25314번 코딩은 체육과목 입니다 - Kotlin(코틀린) 25314번 코딩은 체육과목입니다. 문제를 확인해보면, N 은 4의 배수로 주어지며, 4 이상 1000 이하이므로, Int 형을 사용해도 상관없다. 예제 입력1 과 예제 출력1을 보면 N 을 4로 나눈 몫 만큼 long 을 붙이고 마지막에 int 를 붙이는 모양인 것을 알 수 있다. 풀이 코드는 다음과 같다.import java.io.BufferedReaderimport java.io.InputStreamReaderfun main(args: Array) = with(BufferedReader(InputStreamReader(System.`in`))) { try { val input = readLine().toInt() if(input 1000) { th.. 2025. 4. 11.
[백준] 11382번 꼬마 정민 - Kotlin(코틀린) 11382 번 꼬마 정민 굉장히 간단한 문제라고 생각했다가 무려 4번이나 시도했다. 정답 코드부터 보자import java.io.BufferedReaderimport java.io.InputStreamReaderfun main() { BufferedReader(InputStreamReader(System.`in`)).use { br -> val (a, b, c) = br.readLine().split(" ").map { it.toLong() } println(a + b + c) }} 4번이나 시도하게 됬던 원인은 바로 자료형에 있었다. 입력으로 주어지는 A, B, C 의 범위가 1부터 10의 12승, 즉 1조 라는 큰 숫자까지 받을 수 있게 되어있다. 아무생각 없이 입력받은 A, B, C .. 2025. 4. 11.
Java(자바) - 선택정렬, 버블정렬, 삽입정렬, LRU(Least Recently Used) 오늘 학습한 선택정렬, 버블정렬, 삽입정렬, LRU 알고리즘에 대해 정리한다. 1. 선택정렬 주어진 리스트에서 최소값을 찾고, 그 값을 맨 앞의 값과 교체한다. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체하는 정렬이다. n개의 리스트가 주어졌을때 시간복잡도는 O(n^2)이다. 전체 배열의 개수가 n일때 인덱스는 n-1까지 존재한다. 0부터 n-2까지 반복하는 i for 문에서 idx를 i 로 두고 j+1부터 n까지 반복하는 j for문을 내부에서 반복하며 array[j] < array[idx] 를 판별하여 idx위치의 값보다 j의 위치의 값이 작으면 idx를 j로 한다.(최솟값 인덱스 탐색) j for문 반복이 끝나면 array[i]의 값과 array[idx] 값의 위치를 교환해준다. 이 과정.. 2023. 1. 7.
[백준] 1157번 단어공부 - Java(자바) 오늘의 백준 문제 1157번 단어공부 본래 하루 한문제씩 풀고자 마음먹었지만, 오늘 풀었던 파트 문제가 간단한 것들이 많아 총 5문제를 풀었고, 그중 1157번에서 살짝 헤매었기에 해당 문제를 포스팅한다. 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 풀이 우선 문제에서 대소문자를 구분하지 않는다고 했으니, 전부 대문자로 바꾸고 시작한다... 2023. 1. 6.