본문 바로가기

IT/알고리즘

[백준] 그룹단어 체크 https://www.acmicpc.net/problem/1316 문제그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.  fun main() = with(System.`in`.bufferedReader()) { val count = readLine().toInt() val words = arrayOfNulls(count) for (i in 0 until ..
[프로그래머스] 덧칠하기 https://school.programmers.co.kr/learn/courses/30/lessons/161989 fun solution(n: Int, m: Int, section: IntArray): Int { var answer = 0 val paint = IntArray(n) for (s in section) { paint[s - 1] = 1 } var i = 0 while (i
[프로그래머스] 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=kotlin @Testfun solution() { val k: Int = 6 val tangerine: IntArray = intArrayOf() var answer: Int = 0 val map = mutableMapOf() for (i in tangerine.indices) { map[tangerine[i]] = map.getOrDefault(tangerine[i], 0) + 1 } var result = k for (i in map.values.sortedDescending()) { if(resul..
[프로그래머스] 크기가 작은 부분 문자열 https://school.programmers.co.kr/learn/courses/30/lessons/147355 문제 설명숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.제한사항1 ≤ p의 길이 ≤ 18p의 길이 ≤ t의 길이 ≤ 10,000t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않..
[프로그래머스] 달리기 경주 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다.선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하는 solution 함수를 완성해주세요.제한사항5 ≤ players의..
[프로그래머스] 동영상 재생기 문제 설명당신은 동영상 재생기를 만들고 있습니다. 당신의 동영상 재생기는 10초 전으로 이동, 10초 후로 이동, 오프닝 건너뛰기 3가지 기능을 지원합니다. 각 기능이 수행하는 작업은 다음과 같습니다.10초 전으로 이동: 사용자가 "prev" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 전으로 이동합니다. 현재 위치가 10초 미만인 경우 영상의 처음 위치로 이동합니다. 영상의 처음 위치는 0분 0초입니다.10초 후로 이동: 사용자가 "next" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 후로 이동합니다. 동영상의 남은 시간이 10초 미만일 경우 영상의 마지막 위치로 이동합니다. 영상의 마지막 위치는 동영상의 길이와 같습니다.오프닝 건너뛰기: 현재 재생 위치가 오프닝 ..
[프로그래머스] 연속된 부분 두 수열의 합 문제 설명비내림차순으로 정렬된 수열이 주어질 때, 다음 조건을 만족하는 부분 수열을 찾으려고 합니다.기존 수열에서 임의의 두 인덱스의 원소와 그 사이의 원소를 모두 포함하는 부분 수열이어야 합니다.부분 수열의 합은 k입니다.합이 k인 부분 수열이 여러 개인 경우 길이가 짧은 수열을 찾습니다.길이가 짧은 수열이 여러 개인 경우 앞쪽(시작 인덱스가 작은)에 나오는 수열을 찾습니다.수열을 나타내는 정수 배열 sequence와 부분 수열의 합을 나타내는 정수 k가 매개변수로 주어질 때, 위 조건을 만족하는 부분 수열의 시작 인덱스와 마지막 인덱스를 배열에 담아 return 하는 solution 함수를 완성해주세요. 이때 수열의 인덱스는 0부터 시작합니다.제한사항5 ≤ sequence의 길이 ≤ 1,000,000..
[코딜리티] - Lesson 11 ChocolatesByNumbers 안녕하세요 남갯입니다. boolean[] isEmpty = new boolean[N]; int index = 0; int count = 0; while (!isEmpty[index]) { isEmpty[index] = true; count++; if (index + M > N - 1) { index = (index + M) % N; }else{ index += M; } } return count;위에는 OOM public int solution(int N, int M) { // write your code in Java SE 8 BitSet bitSet = new BitSet(); int index = 0; int count = 0; while (!bitSet.get(index)) { bitSet.set..