Notes 252

[Programmers] 카드 뭉치

문제 조건 주어진 card1 배열과 card2 배열은 순서대로 사용해야한다. 배열의 순서를 바꿀 수 없고, 사용한 카드는 다시 사용할 수 없으며, 사용하지 않고 다음 카드는 사용할 수 없다. 순서대로 사용하여 goal의 단어를 만들 수 있다면 "Yes", 만들 수 없다면 "No"를 반환하자. 문제 풀이 card1 배열과 card2 배열의 인덱스 역할을 하는 first와 second로 배열을 탐색 만약 배열의 길이보다 인덱스 포인터가 커지면 범위오류가 나기때문에, 더 커질 수 없게 방지 탐색하면서 goal과 일치하는 단어가 card1 배열과 card2배열의 순서가 아닐 경우 바로 "No"를 반환 For문을 통해 goal의 모든 단어를 매치시키면 "Yes"를 반환 https://school.programme..

[Programmers] 인사고과

문제 조건 2차원 배열로 인사고과 점수 2개가 주어진다. 두 점수가 그 어떤 사원보다 모두 낮다면 인센티브를 받지 못한다. 두 점수합을 구해 가장 높은 점수부터 1등으로 순위를 매긴다 완호의 점수는 scores [0]이고, 완호의 순위를 반환하자. 만약 완호가 인센티브를 받지 못하면 -1을 반환한다. 문제 풀이 Score 클래스를 만들어 점수1, 점수2, 토탈 점수를 담아준다. ArrayList에 완호보다 토탈 점수가 같거나 낮은 사람을 제외한 Score를 토탈 점수 순으로 배열을 정렬해 준다. 완호보다 점수는 높지만 인센티브를 받지 못하는 사람을 확인해 줄 boolean 배열을 만들어준다. 2중 for문으로 두 점수가 모두 낮은 사람은 boolean 배열에서 True로 바꿔준다. 인센티브 여부의 검증이..

[Programmers] 디펜스 게임

문제 조건 나의 총 병사는 n명, 매 라운드마다 enemy[i] 만큼 적이 등장, k번 enemy[i]를 무효화 가능 나의 병사로 클리어 할 수 있는 라운드 값 리턴 문제 풀이 만약 무적권의 수가 라운드 길이보다 많으면 모든 라운드 무적권으로 클리어 가능 -> 라운드 길이값 반환 먼저 PriorityQueue에 k개의 라운드 enemy[i] 수를 넣어줌 k이후부터 내가 가진 병사로 무찔러야함 만약 pq의 첫번째 값이 내가 무찔러야 하는 적(enemy[i])보다 적으면, pq의 병사를 무찌르고, enemy[i]를 pq에 넣어주어 무적권 사용 라운드를 적이 더 적은 수로 바꿔줌 만약 내 병사가 남아있지 않다면 그대로 라운드 값 (i) 리턴 https://school.programmers.co.kr/learn..

[Programmers] 숫자 카드 나누기

문제 조건 arrayA에서 모두 나누어 지지만, arrayB에서 모두 나누어 지지 않는 수 arrayB에서 모두 나누어 지지만, arrayA에서 모두 나누어 지지 않는 수 두 조건에 해당하는 수 중 가장 큰 수 반환, 조건에 해당 하는 수 없으면 0 반환 문제 풀이 모두 나누어 진다는 것은 약수 중 하나가 정답의 후보 주어진 배열 두개를 정렬 후 가장 작은 수의 약수 리스트를 구한다. 약수 리스트의 숫자로 배열들을 나눠보고, 전부 나누어지는지, 전부 나누어지지 않는지 체크 그 중 가장 큰 숫자를 answer에 업데이트 모든 검증 끝나면 answer 반환 https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용..

[Programmers] 문자열 나누기

문제 조건 주어진 문자열의 문자들을 하나씩 확인해본다. 맨 첫번째 글자의 갯수를 확인하고, 첫번째 글자와 다른 글자의 갯수를 확인한다. 두 값이 일치하는 시점에 문자열을 나누고, 다시 남은 문자열을 해당 조건에 따라 확인한다. 조건에 일치하여 문자열을 나누게 되면, 문자열이 나누어 진 갯수를 리턴한다. 문제 풀이 문자열의 첫 글자를 지정 후, 첫 글자와 맞으면 첫 글자 카운트, 맞지 않다면 다른 글자 수 카운트 만약 두 값이 일치하게 된다면, answer++ 그리고 다음에 오는 글자를 첫글자로 지정 tmp에는 문자열을 나눈 후에도 남아있는 문자가 있는지 확인하고, 조건에 적합하지 않더라도 마지막으로 남은 문자열 덩어리라면 answer++ https://school.programmers.co.kr/lear..

[Programmers] 억억단을 외우자

문제 조건 starts[i]보다 크거나 같고, e보다 작거나 같은 수 중에 억억단에서 가장 많이 등장한 숫자를 찾기 -> starts[i]부터 e까지 약수의 갯수가 가장 많은 숫자값을 리턴 문제 풀이 약수의 갯수를 한번에 구해야 한다 -> 모든 숫자를 다 나눠서 구하면 시간초과 소인수분해를 해서 약수의 갯수를 구하는 방법으로 구한다. Map으로 나눠지는 수를 key로, 제곱이 되는 수를 value로 가진다. 모든 value + 1를 곱해주면 해당 숫자의 약수를 구할 수 있다. 약수의 갯수가 가장 많은 숫자를 구해야 하고, 갯수가 동일하면 가장 큰 값을 구해야하므로, e부터 숫자를 줄여가며 약수의 갯수를 구한다. 구한 약수의 갯수가 이전 값보다 크면 업데이트, 아니면 직전 값 그대로 2차원 배열에 저장 s..

[Programmers] 택배상자

문제 조건 택배 컨테이너 벨트는 1번 상자부터 N번까지 순차적으로 나옴 1,2,3,4,5...N까지 주어진 order배열에 맞게 트럭에 실어야하는게 목표 임시로 짐을 둘 수 있는 임시 컨테이너 벨트는 1개, 짐을 먼저 넣으면 나중에 뺄 수 있는 stack구조 order배열에 맞게 상자를 트럭에 싣는다면 몇 개를 실을 수 있는가 문제 풀이 원래 순차적으로 상자를 출고하는 메인컨테이너 스택은 N부터 쌓아준다. 반복문을 통해 order[i]에 맞는 상자인지 확인 메인컨테이너의 마지막 값이 order[i]와 일치하면 실어주고, 트럭에 실린 상자 갯수 카운트 임시컨테이너의 마지막 값이 order[i]와 일치하면 실어주고, 트럭에 실린 상자 갯수 카운트 둘 다 일치하지 않는다면 메인컨테이너의 상자를 임시컨테이너에 ..

[Programmers] 롤케이크 자르기

문제 조건 두명이 나눠먹는 롤케이크를 반으로 나눴을 때, 토핑의 종류가 서로 공평해야한다. 해당 조건에 부합하는 방법의 수를 리턴 문제 풀이 Map으로 먼저 내가 롤케이크를 가지고있다. Map의 Key값은 토핑의 종류, value는 해당 토핑의 갯수 토핑[i]를 상대의 Map 에 토핑의 종류와 갯수를 넣어줌 나는 해당 토핑의 갯수를 줄인다. 만약 토핑 갯수가 0이되면 토핑 종류값 지워주기 나와 상대 토핑의 갯수가 일치하면 answer ++ 토핑배열을 끝까지 확인하면서 어디서 나누면 토핑갯수가 일치하는지 확인하고, 확인 끝나면 해당 값 리턴 https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의..

[Programmers] 귤 고르기

문제 조건 귤의 크기가 tangerine 배열에 주어지고, K개의 귤을 판매한다. K개의 귤 중 크기가 최대한 일정하도록 한다. 즉 K개의 귤을 고를때, 귤 크기의 다르기가 최솟값이 되는 값을 리턴 문제 풀이 Map을 이용해서 Key값은 귤의 크기, value를 갯수로 체크 Map을 value기준으로 내림차순 정렬 정렬 된 list에서 해당 귤의 크기가 가진 갯수가 K값을 충족하는지 확인, 충족하지 못하면 다음 귤의 크기가 가진 갯수 확인 K에 충족되면 answer값 리턴 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와..

[Programmers] 전화번호 목록

문제 조건 배열에 있는 번호 중 접두어가 되는 번호가 있으면 True 반환, 없으면 false반환 문제 풀이 배열 정렬 후, 배열 요소 비교 후 접두어가 되지 않으면 바로 false반환 이중 반복문을 사용하면 시간초과 배열 정렬을 이용해서 반복문 한번으로 해결 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr