본문 바로가기

반응형

Algorithm/프로그래머스

완전탐색 - 카펫 완전탐색 - 카펫(programmers.co.kr/learn/courses/30/lessons/42842?language=kotlin) 을 풀어봤습니다. fun Level_2_카펫(brown: Int, yellow: Int): IntArray { val sum = brown + yellow val half = sqrt(sum.toFloat()).toInt() val divisors = mutableListOf() for (i in 1..half) { if (sum % i == 0) { divisors.add(i) divisors.add(sum / i) } } return setResult(divisors.sorted().toSet(), yellow) } fun setResult(set: Set, yell.. 더보기
완전탐색 - 모의고사 완전탐색 - 모의고사(programmers.co.kr/learn/courses/30/lessons/42840) 를 풀어봤습니다. fun Level_1_모의고사(answers: IntArray): IntArray { var answer = intArrayOf() val test01 = arrayOf(1, 2, 3, 4, 5) val test02 = arrayOf(2, 1, 2, 3, 2, 4, 2, 5) val test03 = arrayOf(3, 3, 1, 1, 2, 2, 4, 4, 5, 5) val map = hashMapOf() answers.forEachIndexed { index, i -> if (i == test01[index%5]) map[1] = map.getOrDefault(1, 0) + 1.. 더보기
정렬 - H-index 정렬 - H-index(programmers.co.kr/learn/courses/30/lessons/42747?language=kotlin)를 풀어봤다. 풀이는 아래와 같다. fun solution(citations: IntArray): Int { citations.sortedDescending().forEachIndexed { index, i -> if (index >= i) { return index } } return citations.size } 처음엔 문제가 이해가 안갔다... 최초 풀이는 아래와 같다 var answer = 0 for (i in citations.indices) { val h_index = citations[i] var upCount = 0 var downCount = 0 fo.. 더보기
정렬 - 가장 큰 수 정렬 - 가장 큰 수(programmers.co.kr/learn/courses/30/lessons/42746?language=kotlin)를 풀어봤다. 풀이는 아래와 같다. fun solution(numbers: IntArray): String { var answer = "" numbers.map { it.toString() }.sortedWith(Comparator { a, b -> (b + a).compareTo(a + b) }).forEachIndexed { index, s -> if (index == 0 && s == "0") { return "0" } answer += s } return answer } numbers를 map 함수를 사용해 string 형태로 바꾼다. 정렬과 비교를 위해 sor.. 더보기
정렬 - K번째 수 정렬 - K번째 수(programmers.co.kr/learn/courses/30/lessons/42748?language=kotlin)에 관해 Kotlin 으로 풀어봤다. 2018년에 같은 문제를 풀었었다.. 기억도 안나고... 해당 코드(cnwlcjf.tistory.com/35)를 봤는데 우와... 많이 발전했다? 고 느꼈다 ㅋㅋㅋ 첫번째 풀이는 아래와 같다. fun solution(array: IntArray, commands: Array): IntArray { var answer = intArrayOf() val list = mutableListOf() commands.forEach { intArr -> val i = intArr[0] val j = intArr[1] val k = intArr[2.. 더보기
해시 - 완주하지 못한 선수 오랜만에... 간단한 알고리즘 공부를 시작했습니다.(얼마나 갈지는 모르지만...) 알고리즘은 programmers.co.kr/learn/challenges를 참고했고, 해당 문제는 해시의 첫 번째인 완주하지 못한 선수 입니다. 첫 문제라 그런지 쉬웠습니다. (찾아보니 예전에 풀었더라구요... 그래서 그랬나...?) 곧 2020년도 지는데, 2021년엔 더 나은 사람이 되길... 바라면서 !!!! String solution(String[] participant, String[] completion) { String answer = ""; Map map = new HashMap(); for (String str : participant) { map.put(str, map.getOrDefault(str, 0.. 더보기
프로그래머스 level2 문제 : 124나라(java) 문제 설명 : 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요. 제한 조건 : 1. n은 500,000,000이하의 자연수 입니다. 이 문제는 너무 어렵게 생각하다보니 시간이 오래 걸렸네요.. 결국 답을 보고야...말았습니다 흑흑... 쉬운데 ㅠㅠ 풀이를 보면 아 진짜 너무 쉽구나 라고 느껴질겁니다!!! 확인해 볼까요? public String solution(int n) { String answer = .. 더보기
프로그래머스 level1 문제 : 자리수 더하기(java) 문제 설명 : 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한 조건 : 1. N의 범위 : 100,000,000 이하의 자연수 이 문제는 쉬우니 답만 적겠습니다. int solution(int n) { int answer = 0; // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다. System.out.println("Hello Java"); String str = String.valueOf(n); for(int i=0; i 더보기
프로그래머스 level1 문제 : 이상한 문자 만들기(java) 문제 설명 : 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 조건 : 1. 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 자 지금부터 이 이상한 문제를 풀어보겠습니다. 이 문제에서 신경써야 할 것은 무엇인지 생각해봅시다....3분간! 그러다 보면!!!!!!!!!!! 가장 주의할 점은 " "!!! 즉 공백입니다. 공백이 어디에 있는지, 어디에 몇개나 있는지를 신경써야 하는 문제입니다. 제가 생각하기에고려해야할 사항은 총 3가지로 나눌 수 있는데요!!! 1. 예시처럼.. 더보기
프로그래머스 level1 문제 : 예산(java) 문제 설명 : S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다.물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원해 줄 수 있는지 return 하도록 solution 함수를 완성해주세요. 제한 조건 : 1. d는 부.. 더보기