알고리즘 38

프로그래머스 - 인사고과

https://school.programmers.co.kr/learn/courses/30/lessons/152995?language=kotlin 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에는 완호의 점수만 생각하고 필터링을 했는데문제를 잘 읽어보면 임의의 직원도 다른 직원에 비해 두 점수가 모두 낮으면 인센티브에서 제외된다는걸먼저 처리해줘야했다. 이를 위해서는 모든 직원들을 다 체크해볼 필요가 있었는데 2중 for 문은 절대로 쓰기 싫었기에 고민을 하다가정렬을 하기로 했다.하나를 기준으로 정렬을 해두면 두 점수 모두 확인할 필요 없이나머지 점수만 비..

알고리즘 2024.08.28

프로그래머스 - 연속 펄스 부분 수열의 합

https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 솔직히 문제 자체가 복잡했다고 생각하진 않는다그냥 내가 풀이법을 못떠올렸을뿐.. 처음에는 부분 수열을 죄다 만들어서 처리해볼려고 했다.class Solution { fun solution(sequence: IntArray): Long { var answer: Long = -99999 var maxPulse1: Long = Long.MIN_VALUE var ..

알고리즘 2024.08.28

프로그래머스 - 모음사전

https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에는 규칙이 보여서 수학적으로 접근해보려고 했는데 멍청해서 그런가 풀이가 안떠올랐다.그래서 주어지는 조건으로 추측했을때 경우의 수가 엄청 많지는 않겠다 싶어서무식하게 발생할 수 있는 경우의 수를 다 생성하는 함수를 만들고정렬한 뒤 indexOf 를 이용해서 순서를 찾아냈다. class Solution { fun solution(word: String): Int { var answ..

알고리즘 2024.08.28

프로그래머스 - 피로도

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 보자마자 dfs 가 떠오른 문제다.신경써야할 부분은 입장에 필요한 최소 피로도와 소모 피로도를 dfs 를 돌때계속 업데이트 해주면서 방문체크와 함께 해주면 된다. 그리고 여러 순서로 던전을 방문하는걸 다 체크 해봐야하기 때문에방문을 한 뒤에 로직이 끝날때는 방문처리를 해제해주자.class Solution { var visited = booleanArrayOf() var answer: Int..

알고리즘 2024.08.27

프로그래머스 - 할인 행사

https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 성능이 좋은 코드는 아닌것 같지만 ..우선 map 을 이용해서 행사 상품 이름과 사려는 갯수를 넣었다. 그리고 10개씩 상품과 사려는 갯수가 할인품목과 일치해야하기 때문에 left 와 right 를 10 이 차이나게 한 상태로 이동 시키고  위 범위를 이용하여 만들어낸 배열에서 map 에 저장된 key의 품목이 있는지 체크하고 있다면 갯수를 -1 해준다. 이렇게 진행하면서 map 의 모든 key 의..

알고리즘 2024.08.27

프로그래머스 - 숫자 짝꿍

https://school.programmers.co.kr/learn/courses/30/lessons/131128  코드가 그리 깔끔하진 않지만 스스로 생각했을때 아이디어는 나쁘지 않았다고 생각한다 ㅎㅎ각 문자열의 숫자들을 카운트할 Hashmap 을 만들어서 숫자들을 세어주고같은 키를 확인할때 더 적은 숫자를 가진쪽이 공유되는 숫자라고 판단할 수 있다고 생각했다.그리고 minCount 만큼 해당 key 를 문자열에 더해주면 숫자 짝꿍 숫자가 만들어지고이 문자열을 정렬해주면 가장 큰 수가 만들어진다!class Solution { fun solution(X: String, Y: String): String { var items = HashMap() var items2 = Ha..

알고리즘 2024.08.27

프로그래머스 - 혼자 놀기의 달인

https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제를 읽었을때- 임의로 카드를 선택해야하고 -> 다 확인을 해봐야한다.- 열어야 하는 상자가 이미 열려있을때 까지 반복 -> visit 배열을 사용할 것를 읽고 dfs 를 써보면 어떨까 싶었다. 그러나 일반적인 dfs 문제처럼 깊이나 도달해야하는 조건이 존재하지는 않고방문을 할 수 없을때까지 그냥 반복시키면 됐다. 카드 배열 첫번째부터 다 확인을 시작한다.그리고 문제 조건에 맞게 예제를 설명해보면..

알고리즘 2024.08.26

프로그래머스 - 연속 부분 수열 합의 개수

https://school.programmers.co.kr/learn/courses/30/lessons/131701 문제를 처음부터 잘못 이해하기도 했고, 너무 어렵게 생각했다.항상 문제를 볼때 어렵게 생각하지 말고 쉬운 생각부터 하나씩 해보자 핵심은 - copyOfRange 로 연속 부분 수열을 만들기- set 을 이용해서 중복을 제거하기- 원형이라는 조건이기 때문에  elements 의 두배가 되는 array 를 만들어놓기 class Solution { fun solution(elements: IntArray): Int { var answer: Int = 0 val newArr = IntArray(elements.size * 2) { 0 } for (i in..

알고리즘 2024.08.26

프로그래머스 - 택배상자

https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 스스로 풀지 못한 문제다.stack 을 사용하고 하나의 for 문을 쓰면서 트럭에 싣을때마다 target 이라는 int 를 증가시키면서남은 배열과 stack 에서 우선순위에 맞게 트럭에 싣을 수 있는 택배가 있는지 체크한다. 라는 생각은 했는데 처음 우선순위를 확인하기 위한 전처리를 생각하지 못했다. import java.util.*class Solution { fun solution(orde..

알고리즘 2024.08.25

프로그래머스 - 삼총사

https://school.programmers.co.kr/learn/courses/30/lessons/131705?language=kotlin 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 조합 알고리즘을 사용하는 전형적인 문제다. 조합을 이용해서 3개를 뽑았을때 3개의 합이 0 인 경우면 answer 값을 증가시켜주면 된다.class Solution { var max = 3 // 뽑을 숫자 개수 lateinit var result: Array // 뽑은 결과 var answer: Int = 0 fun solution(number: I..

알고리즘 2024.08.25