본문 바로가기

전체 글126

[2023-04-17] 16139 인간 - 컴퓨터 상호작용(Kotlin) + 2문제 문제 링크: https://www.acmicpc.net/problem/16139 16139번: 인간-컴퓨터 상호작용 첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째 www.acmicpc.net 주의할 점은 승재는 호기심이 많기에 (통계적으로 크게 무의미하지만) 같은 문자열을 두고 질문을 q번 할 것이다. 문제 설명에 써져 있는 문장입니다. 덕분에 시간을 버렸습니다. 문자열이 입력 때마다 바뀔 수 있습니다. 하긴 같은 문자열이였으면, 티어가 브론즈였겠다. // 문자열 길이만큼 // a [ ] [ ] [ ] .... // b [.. 2023. 4. 17.
[2023-04-16] 스타트와 링크(Kotlin) 문제 링크: https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제 풀이는 쉬웠다고 생각합니다. 하지만 시간복잡도를 줄이는데에 있어서 많이 힘들었습니다. package sixteenthDay import java.io.* import java.util.* fun main(){ val br = BufferedReader(InputStreamReader(System.`in`)) val n = br.readLine().toInt() var valueArr = Array(n.. 2023. 4. 16.
[2023-04-15] 1461 도서관 (Kotlin) + 1문제 문제 링크: https://www.acmicpc.net/problem/1461 1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net 개인적으로는 규칙을 찾느라 힘들었습니다. 각각의 입력 케이스에 대해 답안을 찾아보며 다음과 같은 가설을 세웠습니다. // 1. 전체의 리스트에서 m으로 나누어 떨어지는지, 아닌지 판단 // 2. 나누어 떨어질 경우, 그대로 정렬하여 계산 (입력 3) // 3. 아닐 경우, plus minus로 나눔 // 4. plus minus 각각 나누어 떨어지는지 판단, 나누어 떨어지지 않을 경우 나머.. 2023. 4. 15.
[2023-04-14] 1041 주사위(Kotlin) 문제 링크: https://www.acmicpc.net/problem/1041 1041번: 주사위 첫째 줄에 N이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수가 주어진다. 위의 그림에서 A, B, C, D, E, F에 쓰여 있는 수가 차례대로 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, 쓰여 있는 수 www.acmicpc.net 가장 윗 부분과, 나머지 부분을 나눠서 생각했습니다. 윗 부분 윗 부분에는 3면이 보이는 주사위가 4개, 2면이 보이는 주사위가 (n - 1)*4개, 1면이 보이는 주사위가 (n - 1)^2 개가 있습니다. 아랫 부분 한 층만을 생각해 볼 때, 2 면이 보이는 주사위가 4개, 1면이 보이는 주사위가 (n - 1) * 4개가 있습니다. 윗 부분을 제외한 모든 충의.. 2023. 4. 14.
[2023-04-13] 14888 연산자 끼워넣기 + 6문제 문제 링크: https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 보통은 dfs를 사용할 때, visit이라는 배열을 만들어 이용을 했었습니다. 그러나 해당 문제에서는 값의 개수가 주어지기 때문에, 배열보다는 map을 이용하는 것이 더 좋겠다는 생각이 들었습니다. package thirteenthDay import java.io.* // 입력에서 0번째는 +, 1번째는 -, 2번째는 *, 3번째.. 2023. 4. 13.
[2023-04-12] 9663번 N-Queen(Kotlin) 문제 링크: https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 어떻게 접근해야 할지 감이 오지 않았습니다. 일단 규칙을 찾아보기 위해 그림을 그렸습니다. // 0 0 x 0 N = 4 // x 0 0 0 // 0 0 0 x // 0 x 0 0 // 0 0 0 x 0 N = 5 // 0 x 0 0 0 // 0 0 0 0 x // 0 0 x 0 0 // x 0 0 0 0 처음에는 x값, y값을 Pair로 가지는 배열을 만드려고 했습니다. ex) Array() 경우의.. 2023. 4. 12.
[2023-04-11] 4779 칸토어 집합(Kotlin) + 5문제 문제 링크: https://www.acmicpc.net/problem/4779 4779번: 칸토어 집합 칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고, www.acmicpc.net 재귀함수를 사용해본지 오래돼서, 시간을 많이 낭비했던 것 같습니다. 코드를 작성하기 전, 메모장을 이용하여 규칙을 고민해봤습니다. "-" 의 개수가 27개일 때, 9 번째 인자에서, 18번 째 인자 직전까지 공백을 삽입합니다. 그 후, 왼쪽에서는 3 번째에서 6번 째 인자 전, 오른쪽에서는 21 번째에서 24번 쨰 전까지 공백을 삽입합니다. 계속 숫자를 적어 내려보다 보니 규칙을 발견.. 2023. 4. 11.
[2023-04-10] 5430 AC(Kotlin) +1 문제 어떻게 하면 시간복잡도를 줄일 수 있을까 많이 고민했던 문제였습니다. 효율적으로 코드를 짜는데 많이 도움 될 것 같아요. 문제 링크: https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 첫 번째 시도 val temp = LinkedList() queue.forEach{i-> temp.add(i) } queue.clear() while(temp.isNotEmpty()){ queue.add(temp.removeLast()) } 입력받은 문자열에 loop문을 돌려, 해당 문자가 R일 때마다 위와 같이 역순으로.. 2023. 4. 10.