코드굽는 타자기
Programmers[42840] - 모의고사[Level1] 본문
링크
문제설명
- 완탐, 시뮬
문제풀이
- 완탐, 시뮬
- mod 이용한 탐색
문제코드
import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedList;
public class Solution42840 {
// 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
// 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
// 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
public static int[][] rand= {
{1, 2, 3, 4, 5},
{2, 1, 2, 3, 2, 4, 2, 5},
{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}
};
public static int[] solution(int[] answers) {
// 5,8,10,answers.length의 최소공배수
int al = answers.length;
int[][] score = {
{1,0},
{2,0},
{3,0},
};
for (int i = 0; i < al; i++) {
if(answers[i]==rand[0][i%5]) {
score[0][1]++;
}
if(answers[i]==rand[1][i%8]) {
score[1][1]++;
}
if(answers[i]==rand[2][i%10]) {
score[2][1]++;
}
}
int max=-1;
for (int i = 0; i < 3; i++) {
max = Math.max(max, score[i][1]);
}
LinkedList<Integer> ans = new LinkedList<>();
for (int i = 0; i < 3; i++) {
if(score[i][1]==max) ans.add(score[i][0]);
}
int[] answer = new int[ans.size()];
for (int i = 0; i < ans.size(); i++) {
answer[i] = ans.get(i);
}
return answer;
}
public static void main(String[] args) {
System.out.println(Arrays.toString(solution(new int[] {1,2,3,4,5})));
System.out.println(Arrays.toString(solution(new int[] {1,3,2,4,2})));
}
}
아쉬운점
- 문제 제대로 안읽음
- 시험은 최대 10,000 문제이지 10000문제가 아니다...
- 최대공약수 최소공배수 구할 의미가 없었음.
잘한점
- (?)최대공약수, 최소공배수 공부함
- mod 씀
'알고리즘 > 완전탐색' 카테고리의 다른 글
SWEA[1952] - 수영장 (0) | 2020.02.18 |
---|---|
SWEA[2383] - 점심 식사시간 (0) | 2020.02.18 |
SWEA[1244] - 최대 상금[D3] (0) | 2020.02.09 |
SWEA[2819] - 격자판의 숫자 이어 붙이기[D4] (0) | 2020.02.08 |
Baekjoon[17070] - 파이프 옮기기 1 (0) | 2020.02.02 |
Comments