프로그래머스 Lv.2

    [Java] 프로그래머스 Lv.2 : 가장 큰 정사각형 찾기

    https://programmers.co.kr/learn/courses/30/lessons/12905 코딩테스트 연습 - 가장 큰 정사각형 찾기 [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9 programmers.co.kr 풀이 해당 문제의 규칙은 다음과 같다. 행 또는 열의 길이가 1이면 정사각형의 넓이는 1이다. 루프를 돌아 자신의 위치([i][j])의 값이 0이 아닌 경우, 자신의 기준으로 왼쪽상단(↖), 왼쪽(←), 위쪽(↑) 의 최솟값을 구한뒤, 자신의 위치에 최솟값+1을 할당한다. 그렇게 구한 board값 중 최댓값을 answer에 할당 해준 뒤 answer*answer로 정사각형 넓이를 구해 리턴한다. 2번의 최솟값이 0이상인 경우엔 1로 이루어진 정사각형이 ..

    [Java] 프로그래머스 Lv.2 : 타겟 넘버

    https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 풀이 DFS를 이용한 풀이 depth 변수 값을 통해 탐색 중인 트리의 깊이를 알 수 있다. 트리 끝에 도착했다면, 여태 계산한 result와 target 값을 비교한다. class Solution { int count = 0; public int solution(int[] numbers, int target) { int answer = ..

    [Java] 프로그래머스 Lv.2 : 카펫

    https://programmers.co.kr/learn/courses/30/lessons/42842?language=java 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 풀이 카펫 격자의 수는 다음과 같다. (노란색) = (가로-2)*(세로-2) (갈색) = (가로*세로)-(노란색) 1. 노란색 격자의 수(yellow)의 약수의 중심까지 반복문을 돌려준다. (즉, 해당 숫자의 √N까지 확인) 2. i가 yellow의 약수라면, 가로에 i+2, 세로에 (yellow/i) +2을 저장한다. (가로 >= ..

    [Java] 프로그래머스 Lv.2 : H-Index

    https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 문제이해가 잘 되지않아서 테스트 케이스를 많이 추가해서 풀었었다.. # 테스트 케이스 공유 Parameters Return [3, 1, 0] 1 [3, 1, 1, 1, 4] 2 [0, 0, 0, 1] 1 [9, 9, 9, 12] 4 [1, 1, 5, 7, 6] 3 [0, 0, 0] (테스트 16번) 0 풀이 h를 발표한 논문 수(..

    [Java] 프로그래머스 Lv.2 : 더 맵게

    https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 우선순위 큐(Priority Queue)를 사용한다. 낮은 숫자가 우선순위인 int 형 우선순위 큐를 선언하고 큐에 스코빌지수를 넣어준다. 첫번째 heap의 요소가 K이상이 될 때까지 반복문을 돌린다. 앞의 두 음식을 꺼내(pop) 새로운 음식으로 만들어 다시 heap에 넣어준다.(pull) 가장 앞의 음식의 스코빌 지수가 K이상이 되면 bre..

    [Java] 프로그래머스 Lv.2 : 주식가격

    https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 풀이 for문으로 해당 초 단위의 주식가격과 그 이후의 주식가격을 비교하면서 가격이 떨어지기 전까지의 시간을 센다. for문이 끝나면 answer 시간(cnt)을 넣어주고 초기화 시켜준다. 큐에서 해당 초단위를 poll 시켜주고 해당 초 단위 위치(j)를 증가시킨다. import java.util.*; class Solu..

    [Java] 프로그래머스 Lv.2 : 위장

    https://programmers.co.kr/learn/courses/30/lessons/42578?language=java 코딩테스트 연습 - 위장 programmers.co.kr 풀이 경우의 수 계산법만 알면 간단히 풀 수 있다. 예를 들어, 상의 A개, 하의 B개가 주어진다면 서로 다른 옷의 조합의 수는 다음과 같이 계산할 수 있다. 상의든 하의든 1개만 선택해서 입는 경우 = A+B 상의1개 하의 1개 선택해서 입는 경우 = A*B 아무것도 입지 않는 수 = 1 최종 공식 = A+B+(A*B)+1 = (A+1)*(B+1) 하지만 우리는 아무것도 입지 않는 수는 빼줘야하기 때문에 최종적으로 -1을 해주도록 한다. HashMap에 key값으로는 의상의 종류, value로는 그 개수를 넣어줄 것인데,..

    [Java] 프로그래머스 Lv.2 > 전화번호 목록

    https://programmers.co.kr/learn/courses/30/lessons/42577?language=java 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 풀이 해시문제인데 아직 해시를 잘 모르겠어서 일단.. 마음대로 풀었다^^.. 처음에는 for문을 2번 돌려서 비교했는데, 효율성 테스트에서 실패가 떴다. => 배열을 먼저 sort(정렬)해주고, for문을 한번만 돌리도록 수정했다. ( ["119", "1195524421", "97674223"]와 같이 사전순으로 정렬되니, 앞 뒤로만..