Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- programmers
- HashMap
- 달빛클럽1기
- React.js
- 인플레이션에서 살아남기
- SoftwareExpertAcademy
- Algorithm
- React
- 알고리즘
- 카카오블라인드코딩테스트
- 경제공부
- SWEA
- 프로그래머스
- 자바
- 재귀
- 백준
- 달빛클럽
- 달빛클럽 1기
- ReactJS로 영화 웹 서비스 만들기
- 노마드코더
- dfs
- BOJ
- 노마드코더 강의
- Stack
- Array
- 달빛캠퍼스
- JPA
- 리액트
- 완전탐색
- Java
Archives
- Today
- Total
th42500의 TIL
[Java] 완전탐색 - 모의고사(Lv1) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42840
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✔ 입출력 예시
💡 포인트
1️⃣ 정답 배열의 순서와 각각 길이가 다른 수포자의 정답 배열의 순서를 일치시킬 수 있어야 함
2️⃣ 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬
❓ 풀이과정
1️⃣ 각 수포자가 찍는 방식을 배열을 생성하여 담기
2️⃣ 정답 배열을 순회하며 각 번호의 수포자의 번호와 일치한다면 success[수포자 번호-1]+1
👉 현재 정답 배열의 인덱스%각 수포자 정답의 길이 = 수포자가 입력한 정답 인덱스
3️⃣ success 배열을 순회하며 최댓값 찾기
4️⃣ success 배열을 한번 더 순회하며 최댓값이 같은 수가 있는지 확인하고 있다면 리스트에 인덱스 (수포자의 번호-1) 추가
5️⃣ 수포자 번호 정답 배열에 입력
👉 인덱스는 0부터 시작하므로 수포자의 번호 입력 시 +1 해주기
❗ 결과
👉 테스트 통과
✔ 소스코드
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) {
int[][] sizes = { { 60, 50 }, { 30, 70 }, { 60, 30 }, { 80, 40 } };
// int[][] sizes = {{10, 7}, {12, 3}, {8, 15}, {14, 7}, {5, 15}};
// int[][] sizes = {{14, 4}, {19, 6}, {6, 16}, {18, 7}, {7, 11}};
System.out.println(solution(sizes));
}
private public int[] solution(int[] answers) {
int[] one = {1, 2, 3, 4, 5};
int[] two = {2, 1, 2, 3, 2, 4, 2, 5};
int[] three = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
ArrayList<Integer> list = new ArrayList<>();
int[] success = new int[3];
for (int i = 0; i < answers.length; i++) {
if(answers[i] == one[i%one.length]) {
success[0]++;
}
if(answers[i] == two[i%two.length]) {
success[1]++;
}
if(answers[i] == three[i%three.length]) {
success[2]++;
}
}
int max = 0;
for (int i = 0; i < success.length; i++) {
if(max < success[i]) max = success[i];
}
for (int i = 0; i < success.length; i++) {
if(success[i] == max) {
list.add(i);
}
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++) {
answer[i] = list.get(i)+1;
}
// System.out.println(Arrays.toString(answer));
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[Java] 완전탐색 - 최소 직사각형 (Lv1) (0) | 2022.08.07 |
---|---|
[Java] 2018 KAKAO BLIND RECRUITMENT - [1차] 뉴스 클러스터링 (Lv2) (0) | 2022.08.05 |
[Java] 완전탐색 - 피로도 (Lv2) (0) | 2022.08.04 |
[Java] 깊이/너비 우선 탐색(DFS/BFS) - 게임 맵 최단거리 (Lv2) (0) | 2022.08.04 |
[Java] 완전 탐색 - 소수 찾기 (Lv2) (0) | 2022.08.04 |
Comments