알고리즘 38

프로그래머스 - 콜라 문제

https://school.programmers.co.kr/learn/courses/30/lessons/132267?language=kotlin 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 그대로 수식만 세우면 풀린다.class Solution { fun solution(a: Int, b: Int, n: Int): Int { var answer: Int = 0 var count = n // count 를 줄여가면서 최소로 가져가야하는 숫자인 a 보다 작아지면 while 탈출 whi..

알고리즘 2024.08.21

프로그래머스 - 햄버거 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에 문제가 무슨 말인지 이해를 못했다.결국 핵심은 햄버거는  빵-야채-고기-빵  으로 순서가 주어질때만 햄버거로 만들 수 있고햄버거로 만들어지면 기존 재료 list 에서는 빼줘야한다는거다.그렇게 햄버거를 몇개까지 만들 수 있냐는 문제인데 결국 빵-야채-고기-빵 이라는 하나의 패턴이 재료 list에 있는 문제라고 생각했고처음에는 아래처럼 풀었다.class Solution { fun solut..

알고리즘 2024.08.21

프로그래머스 - 푸드 파이트 대회

https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명은 길지만 결과 문자열 중간에는 물을 의미하는 "0" 이 무조건 와야하고왼쪽에서 먹기 시작하는 사람 , 오른쪽에서 먹기 시작하는 사람이 동일하게 음식을 먹어야하기 때문에문자열은 좌우 대칭이 되어야한다. 좌우대칭이 되려면 음식은 짝수개로만 쓸 수 있는데 주어진 음식이 홀수개인 경우는 (food[i] / 2).toInt() 2로 나누고 정수형으로 변경해줬다.이렇게 하면 음식이 1번 음식이 3개 ..

알고리즘 2024.08.21

프로그래머스 - 과일장수

문제 설명과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다.한 상자에 사과를 m개씩 담아 포장합니다.상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다.과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다)예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻..

알고리즘 2024.08.20

프로그래머스 - 기사단원의 무기

https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 자체는 간단하다.천천히 읽으면 무슨 말인지 이해하는데 어렵지 않다. 이 문제의 핵심은 아래인데각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다. 예를 들어, 15번으로 지정된 기사..

알고리즘 2024.08.19

프로그래머스 - 귤고르기

문제 설명경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다.예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다.경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를 때 크기가 서로..

알고리즘 2024.08.18

프로그래머스 - 명예의 전당(1)

문제 설명은 길지만 가수의 점수가 들어올때마다 소팅해주고명예의 전당에 포함되는 k번째 숫자를 기준으로그보다 작을때는 소팅된 리스트의 가장 마지막 숫자,그보다 클때는 소팅된 리스트의 k-1 번째 값을 발표점수 리스트에 추가해주면 된다. class Solution { fun solution(k: Int, score: IntArray): IntArray { var answer = mutableListOf() var list = mutableListOf() score.forEach{ list.add(it) list = list.sorted().reversed().toMutableList() if(..

알고리즘 2024.08.18

프로그래머스 - 문자열 나누기

https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 설명 그대로 문자의 요소들을 카운트해가며 비교하고 x와 같은 문자를 센 카운트와 x와 다른 문자를 센 카운트가 같아질때문자열을 자르고 그때마다 비교 기준이 되는 x 라는 문자를 갱신해주면 된다. class Solution { fun solution(s: String): Int { var answer: Int = 0 var str = s while (str...

알고리즘 2024.08.17

프로그래머스 - 크기가 작은 부분 문자열

문자열 처리 문제다.어려울건 없지만 처음에 substring 으로 만든 문자열들을list에 담고 거기서 filter 처리해서 size 를 만들고 하는 불필요한 작업들도 있고잘라낸 문자열을 toInt()로 처리했는데주어진 조건의 p가 18자리까지도 될 수 있어서 int로는 표현할 수 없어서 런타임에러가 발생하는 케이스가 있었다. 그래서 불필요한 작업을 없애고 toLong으로 변환해서 비교하는 코드로 변경했다. import java.util.*class Solution { fun solution(t: String, p: String): Int { var answer: Int = 0 var size = p.length var list = mutableListOf() ..

알고리즘 2024.08.14

프로그래머스 - 숫자 변환하기

언어 : Kotlin x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성해주세요.  라는 문제다 최소 연산 횟수니까 bfs 를 선택하는게 맞았지만처음에는 dfs 로 풀면 풀릴거 같은데? 라고 생각하고 풀었다.결과는 시간초과 나는 케이스가 있어서 실패.아래는 bfs 풀이다.내용 자체는 단순해서 bfs에 대해서 이해하고 있다면 풀이가 어렵진 않다.import java.util.LinkedListimport java.util.Queuelateinit var answer: ArrayListlateinit var queue: Queue>lateinit var visited: HashMapclass Solution { fun solution(x: Int, y: In..

알고리즘 2024.08.14