본문 바로가기

분류 전체보기

(96)
[프로그래머스] 디스크 컨트롤러 with Kotlin 문제 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 각 작업에 대해 [작업이 요청되는 시점, 작업의 소요시간]을 담은 2차원 배열 jobs가 매개변수로 주어질 때, 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 처리하면 평균이 얼마가 되는지 return 하도록 solution 함수를 작성해주세요. (단, 소수점 이하의 수는 버립니다) 자세한 문제 내용은 프로그래머스에서https://school.programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머..
[프로그래머스] 2024 KAKAO WINTER INTERNSHIP n + 1 카드게임 with Kotlin 문제1~n 사이의 수가 적힌 카드가 하나씩 있는 카드 뭉치와 동전 coin개를 이용한 게임각 카드는 중첩되지 않는다. (카드 10장이 있다면 10장 다 다른 숫자)카드 뭉치에서 n/3개의 카드를 뽑아 갖는다. (카드 뭉치 앞에서부터 n/3개)각 라운드마다 카드 뭉치에서 2장씩 뽑고, 버리거나 동전을 사용하여 갖는다. (동전 하나 당 카드 한 장)카드 뭉치에 카드가 없다면 종료또한 라운드마다 내가 갖고 있는 카드에서 n+1이 되도록 카드 두 장을 제출하고 다음 라운드로 진행제출할 수 없다면 종료(예시는 프로그래머스 참고 바랍니다.)https://school.programmers.co.kr/learn/courses/30/lessons/258707 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭..
[프로그래머스] 2024 KAKAO WINTER INTERNSHIP 주사위 고르기 with Kotlin 문제n개의 주사위가 있다.이 주사위는 6면으로 되어있고, 각 주사위의 번호는 1~n의 번호를 갖고 있다. (1번 주사위부터 n번 주사위) A가 n/2개의 주사위를 가져가고 B가 나머지 주사위를 가져간다.각각 가져간 주사위들을 던져 나온 숫자의 합을 비교해 합이 더 큰 사람이 이기는 게임이다.이때, A가 승리할 확률이 가장 높은 주사위의 조합을 반환하는 문제이다. 예시 ( n = 4 )주사위구성#1[1, 2, 3, 4, 5, 6]#2[3, 3, 3, 3, 4, 4]#3[1, 3, 3, 4, 4, 4]#4[1, 1, 4, 4, 5, 5] 조합에 따른 결과A의 주사위승무패#1, #2596196504#1, #3560176560#1, #4616184496#2, #3496184616#2, #4560176560#3,..
[Kotlin] 정렬 1. sort() 와 sorted()sort() 는 Mutable 상태에 사용하는 메서드이다.sorted()는 Immutable 상태에 사용한다.List는 Immutable 상태이므로 List에 sort()를 사용하면 오류가 발생한다.반대로 Mutable한 Array에 sorted를 사용하면 문제 없이 정렬이 수행된다. 다만, sort()는 기존에 있던 배열 또는 ArrayList에 정렬을 수행시켜주지만sorted()는 정렬된 배열 또는 리스트를 반환한다.val array = arrayOf(4, 3, 2, 1)array.sort()// array : [1, 2, 3, 4]val array2 = arrayOf(4, 3, 2, 1)val newArray2 = array2.sorted()// array2 : ..
추상 클래스 우리가 기존에 사용하던 클래스의 구조는 다음과 같다. class A { private val a = 0 public fun method(){...} } 당연히 A 클래스에 대한 객체를 생성할 수 있고, 객체에 대한 메서드 또한 문제 없이 사용할 수 있다. 추상 클래스는? 반면 추상 클래스의 구조는 다음과 같다. 필드 일반 메서드 추상 메서드 abstract class A { // 필드 lateinit var name: String val age = 20 fun normalMethod(){...} // 일반 메서드 abstract fun method() // 추상 메서드 abstract fun method2(){...} // 오류 발생 } A를 추상 클래스, method 함수를 추상 메서드라고 한다. 추상..
[안드로이드] 안드로이드 버전과 SDK 안드로이드 버전 Windows 버전과 마찬가지로 안드로이드 또한 OS 버전이 존재한다. 안드로이드 버전에 맞춰 SDK(API Level) 또한 업데이트 되며, 버전마다 사용할 수 있는 기능들이 달라지게 된다. 때문에 이전 버전에서 잘 되던 기능이 다음 버전에서 안되는 경우 또한 발생하기도 한다. 안드로이드 버전은 핸드폰 설정 > 휴대전화 정보 > 소프트웨어 정보에서 확인할 수 있으며, S24 기준 안드로이드 14 버전이 설치되어 있다. S23의 경우 출시 당시 13에서 현재는 14로 업데이트 되었다. SDK SDK란 Software Development Kit의 약자로 소프트웨어 개발 도구로 사용되고 있다. SDK에는 개발을 하는데 필요한 각종 코드와 문서들이 포함되어 있다. 안드로이드 프로젝트에 bui..
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 불량 사용자 with Kotlin 문제 https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 1. banned_id를 기준으로 가능한 user_id를 HashMap에 저장, key는 banned_id의 인덱스 2. HashMap을 바탕으로 DFS 탐색하여 가능한 조합 List에 저장 3. List에는 중복되는 조합도 있음으로 toSet()을 활용하여 중복 제거 후 크기 반환 코드 class Solution { fun solution(user_id: Array, banned..
[프로그래머스] 베스트앨범 with Kotlin 문제 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생된 횟수입니다. ..
[프로그래머스] 단어 변환 with Kotlin 문제 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다.두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 수 있는지..
[프로그래머스] 네트워크 with Kotlin 문제 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 풀이 과정 1. 1번 컴퓨터부터 연결되어 있는 N번 컴퓨터 DFS 탐색 2. 탐색한 컴퓨터는 중복탐색하지 않도록 따로 저장 3. 1번과 연결된 컴퓨터들에 대한 탐색이 종료되면 탐색하지 않은 컴퓨터를 기준으로 다시 탐색 코드 class Solution { val checkComputer = ArrayList() fun solution(n: Int, computers: Array): Int { var answer = 0 for(i in computers.indices){ if(checkComputer.contains(i)) cont..