분류 전체보기
-
수 정렬하기3백준 2023. 7. 31. 12:00
메모리 초과부터 시간초과까지 다양한 방법으로 오답처리가 되었다…. 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 10 5 2 3 1 4 2 3 5 1 7 예제 출력 1 1 1 2 2 3 3 4 5 5 7 오답코드 fun main(){ var count:Int= readln().toInt() var num_list=ArrayList() for(i in 0 until count){ var temp:Int= ..
-
이상한 곱셈(공부필요)백준 2023. 7. 31. 11:59
예시에서 나온 값들을 입력했을때는 정상적으로 값이 출력됬지만, 백준에서 채점만하면 numberFormat런타임 에러가 발생하며, 오답처리가 되어서 시간이 걸린문제다.. 문제 A×B를 계산하다 지겨워진 형택이는 A×B를 새로운 방법으로 정의하려고 한다. A에서 한 자리를 뽑고 × B에서 임의로 한 자리를 뽑아 곱한다. 의 가능한 모든 조합 (A가 n자리, B가 m자리 수라면 총 가능한 조합은 n×m개)을 더한 수로 정의하려고 한다. 예를 들어 121×34는 1×3 + 1×4 + 2×3 + 2×4 + 1×3 + 1×4 = 28 이 된다. 이러한 형택이의 곱셈 결과를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는 음이 아닌 정수이다. 수..
-
최대공약수와 최소공배수<유클리드 호제법>백준 2023. 7. 31. 11:58
이 문제는 유클리드 호제법을 사용하여 해결하는 문제였다. 유클리드 호제법은 최대공약수를 구하는 대표적인 알고리즘 중 하나이다. 처음에는 생소해서 원론을 찾아봤는데.. 유클리드의 원론 제7권에는 다음과 같은 내용이 기술되어 있었다.. 두 개의 자연수 또는 정수 a와 b에 대해서, a를 b로 나눈 나머지를 r이라고 하겠습니다. (단, a는 b보다 큽니다.) 그러면 a와 b의 최대공약수는 b와 r의 최대공약수와 같습니다. 이러한 성질에 따라, b를 r로 나눈 나머지 r'을 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복합니다. 이 과정을 나머지가 0이 되었을 때까지 반복합니다. 그러면 마지막으로 사용한 나누는 수가 a와 b의 최대공약수가 됩니다. 이 알고리즘은 유클리드의 원론에서 가장 오래된 알고..
-
나이순 정렬백준 2023. 7. 31. 11:57
선택정렬을 써볼라했지만.. 코틀린에서 제공하는 sortWith메소드를 활용하면 됬다. 문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가..
-
2751번 수 정렬하기백준 2023. 7. 31. 11:56
선택정렬 알고리즘이라고 생각하고 가벼운마음으로 도전했다가 시간초과에 호되게 당했다.. 퀵정렬 알고리즘..? 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 5 5 4 3 2 1 예제 출력 1 1 2 3 4 5 코드 시간초과 발생 코드 import java.io.BufferedReader import java.io.InputStreamReader import java.uti..
-
소수 1312번 (좋은 문제..)백준 2023. 7. 31. 11:54
쉬워보여서 빨리풀려했는데 안풀린다.. 문제 피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다. 입력 첫 번째 줄에 A와 B(1 ≤ A, B ≤ 100,000), N(1 ≤ N ≤ 1,000,000)이 공백을 경계로 주어진다. 출력 A÷B를 했을 때, 소숫점 아래 N번째 수를 출력한다. 예제 입력 1 25 7 5 예제 출력 1 2 오답코드 fun main() { val input = readLine() val numbers = input?.split(" ")?.map { it.toDouble() } val num1 = numbers!![0] val num2..
-
빠른 입출력백준 2023. 7. 31. 11:54
realine() 이나 readln()을 썼다간 시간초과..! import java.io.BufferedReader import java.io.InputStreamReader import java.util.StringTokenizer fun main() { val br = BufferedReader(InputStreamReader(System.`in`)) val sb = StringBuilder() val i = br.readLine().toInt() val array = IntArray(i) for (j in 0 until i) { val input = br.readLine() if (input == null || input.isBlank()) { break } val st = StringTokeniz..
-
EOF의 이해백준 2023. 7. 31. 11:53
문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트 케이스마다 A+B를 출력한다. 예제 입력 1 1 1 2 3 3 4 9 8 5 2 예제 출력 1 2 5 7 17 7 풀이 이 문제의 핵심은 EOF를 감지하고 반복문을 탈출 하는 것 이었다.. 여기서 EOF(End of File)는 파일 또는 입력 소스에서 더 이상 읽을 데이터가 없음을 나타내는 신호이다. 해당 코드에서는 if (input == null|| input.*isBlank*())이 부분을 통해 EOF를 감지하고 무한루프를 탈출 하도록 설계하였..