본문 바로가기

코딩 테스트

(44)
[프로그래머스] N개의 최소공배수 with Kotlin 문제 N개의 숫자가 들의 최소공배수를 구하는 문제 풀이 과정 숫자 2개씩 순차적으로 최소공배수를 구한다. 최소공배수 : A * B / 최대공약수 코드 class Solution { fun solution(arr: IntArray): Int { var answer = arr[0] arr.forEach{ answer = lcm(answer, it) } return answer } //최소 공배수 fun lcm(a:Int, b:Int) = a * b / gcd(a, b) //최대 공약수 fun gcd(a:Int, b:Int):Int{ return if (a < b){ if (a == 0) b else gcd(a, b % a) } else{ if (b == 0) a else gcd(b, a % b) } } }
[프로그래머스] 카펫 with Kotlin 문제 중앙에 노란색, 테두리 갈색 카펫에서 노란색과 갈색 개수만 알고 있을 때, 카펫의 가로 세로 크기를 순서대로 배열에 담아 return 하는 문제 제한 사항 갈색 격자의 수 brown은 8이상 5,000 이하인 자연수 노란색 격자의 수 yellow는 1이상 2,000,000 이하인 자연수 카펫의 가로의 길이는 세로와 같거나 세로보다 길다. 풀이 방법 가로 >= 세로 이므로 세로 길이의 최대는 yellow+brown 값의 제곱근 노란색 가로 = yellow / 세로 노란색 격자를 바탕으로 갈색 격자의 수를 구한 뒤 brown 값과 같으며, yellow % 세로 == 0 이면 카펫의 크기 코드 import kotlin.math.sqrt class Solution { fun solution(brown: I..
[프로그래머스] 피보나치 수 with Kotlin 문제 n번째 피보나치 수의 값에 1234567을 나눈 나머지 값을 구하는 문제 제한 사항 2
[프로그래머스] 실패율 with Kotlin 문제 게임 스테이지 별 실패율을 구해 내림차순 정렬하여 실패율이 높은 스테이지 순서대로 반환하는 문제 풀이 과정 실패율 = 도달했으나 성공하지 못한 플레이어 수 / 도달한 플레이어 수 Map에 스테이지 별 실패율을 넣어 저장 values를 기준으로 내림차순 정렬 이후 key값 반환 코드 class Solution { fun solution(N: Int, stages: IntArray): IntArray { var answer = IntArray(N) val stage = HashMap() // 스테이지 별 실패율 저장 for(i in 1 .. N){ var failPercent = 0.0 val a = stages.count{it==i}.toDouble() val b = stages.count{it >=..
[프로그래머스] 둘만의 암호 with Kotlin 문제 문자열 s가 주어졌을 때, s의 각각의 문자를 index만큼 증가시켜주는 문제 만일 사이에 skip 문자가 포함되어있다면 건너뛰고 증가 s가 "abc" 이고 index가 1이라면 "bcd" 이며, 만일 skip : "d" 라면 d를 건너뛴 "bce" 풀이 방법 1. 아스키코드 이용 2. inc() 메서드를 이용 저는 1번으로 풀었습니다. 코드 class Solution { fun solution(s: String, skip: String, index: Int): String { var answer = "" // a : 97 z : 122 .toChar() for(i in s){ var asc = i.toInt() var count = 0 while(count < index){ asc += 1 // ..
[프로그래머스] 크레인 인형뽑기 게임 문제 인형뽑기를 하여 뽑은 인형을 1자형 바구니에 담을 때 같은 인형이 연속으로 있으면 터지며, 몇 개의 인형이 터졌는지 반환하는 문제 풀이 과정 2차원 배열로 주어진 인형뽑기 기계의 인형들( board[x][y] )에서 y축이 크레인의 위치, x축이 크레인이 인형을 뽑으러 내려가는 길 뽑은 인형 자리는 0으로 바꿔주고 뽑은 인형은 스택에 담아 준다. 만약 스택에 연속으로 같은 숫자가 있다면 answer+=2 이후 펑 코드 import java.util.* class Solution { fun solution(board: Array, moves: IntArray): Int { var answer = 0 //Stack val bucket = Stack() for(y in moves){ for(x in bo..
[프로그래머스] 키패드 누르기 with Kotlin 문제 숫자 버튼을 어느쪽 손가락으로 누르는지 배열에 담아 반환하는 문제 1 2 3 4 5 6 7 8 9 * 0 # 조건 시작할 때 왼손은 *에 오른손은 #에 위치 1, 4, 7은 왼손으로 3, 6, 9 는 오른손으로 가운데 열은 손가락이 더 가까운 쪽으로 누른다. 만일 가운데 열 중 양 손의 거리가 같다면, 왼손잡이는 왼손으로 오른손잡이는 오른손으로 누른다. 풀이 과정 1. 키패드를 2차원 배열로 초기화 2. 각 번호의 좌표를 Map에 담는다. 3. 현재 양 손의 위치를 담는 변수 선언 4. 조건에 맞춰 누른 손가락을 담아주면 된다. 코드 import kotlin.math.abs class Solution { fun solution(numbers: IntArray, hand: String): String..
[프로그래머스] 햄버거 만들기 with Kotlin 문제 햄버거 = 빵(1) - 야채(2) - 고기(3) - 빵(1) 재료의 정보를 나타내는 정수 배열 ingredient 가 주어졌을 때, 상수가 포장하는 햄버거의 개수 구하기 풀이 과정 재료를 순차적으로 하나하나 담다가 1231이 나열되면 카운팅하며, 1231 삭제 코드 class Solution { fun solution(ingredient: IntArray): Int { var answer: Int = 0 val sb = StringBuilder() for (item in ingredient) { sb.append(item) //하나하나 담기 if (sb.length >= 4 && sb.substring(sb.length - 4) == "1231") { //1231이 오면 sb.setLength(sb..
[프로그래머스] 바탕화면 정리 with Kotlin 문제 바탕화면 아이콘("#")을 최소로 드래그할 수 있는 S좌표부터 E좌표의 값을 각각 배열에 넣어 반환하는 문제 풀이 과정 S는 기존 배열의 인덱스와 같다. E는 기존 배열의 인덱스 + 1 이다. S는 "#"이 들어있는 인덱스 중 x가 가장 적은 인덱스의 x와 y가 가장 적은 인덱스의 y를 조합 E는 반대 코드 import kotlin.math.* class Solution { fun solution(wallpaper: Array): IntArray { val saveX = ArrayList() val saveY = ArrayList() for(x in wallpaper.indices){ for(y in wallpaper[x].indices){ if(wallpaper[x][y] == '#') { sav..
[프로그래머스] 옹알이(1) with Kotlin 문제 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ babbling의 길이 ≤ 100 1 ≤ babbling[i]의 길이 ≤ 15 babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다. 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다. 문자열은 알파벳 소문자로만 이..