일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- flask
- oauth
- google oauth
- real time web
- html
- Hibernate
- python
- jenkins
- Java
- JPA
- hanghae99
- session
- Stream
- JWT
- SseEmitter
- Project
- DI
- spring
- web
- server send event
- bean
- programmers
- cookie
- Anolog
- jQuery
- Spring Security
- 생명주기 콜백
- javascript
- 항해99
- WIL
Archives
- Today
- Total
끄적끄적 코딩일지
[Programmers]모의고사(난이도:★★★★) 본문
https://programmers.co.kr/learn/courses/30/lessons/42840
// 배열을 사용해서 풀수도 있었으나 페턴을 분석하는 알고리즘을 시도해보고 싶었음
class Solution {
int count = 1;
int tmp = 0;
public int[] solution(int[] answers) {
int[] scores = new int[]{ getScore(answers,1),getScore(answers,2),getScore(answers,3)};
return makeAnswerArry(scores);
}
// 정답 배열 만들기
public int[] makeAnswerArry(int[] arry){
int anscount = 0;
int heighScore = 0;
for(int i : arry){
if(heighScore < i){
heighScore = i;
anscount = 1;
}else if(heighScore == i)
anscount++;
}
int[] ans = new int[anscount];
int idx = 0;
for(int i = 0; i < arry.length;i++){
if(arry[i] == heighScore){
ans[idx] = i+1;
idx++;
}
if(idx == anscount)
break;
}
return ans;
}
// 점수 얻기
public int getScore(int[] answers,int num){
int nextAns = num;
int score = 0;
for(int i : answers){
if (i == nextAns)
score++;
if(num == 1)
nextAns = nextPatternA(nextAns);
else if(num == 2)
nextAns = nextPatternB(nextAns);
else
nextAns = nextPatternC(nextAns);
}
return score;
}
// 페턴 분석
public int nextPatternA(int num){
return num == 5 ? 1 : ++num;
}
public int nextPatternB(int num){
if (num == 2){
if(count == 2)
count++;
return count;
}else{
count++;
if(count == 6)
count = 1;
return 2;
}
}
public int nextPatternC(int num){
if(num != tmp){
tmp = num;
return num;
}else{
if(num == 3) {
num = 1;
}else {
num++;
if(num == 3)
num = 4;
if(num == 6)
num = 3;
}
return num;
}
}
}
'알고리즘' 카테고리의 다른 글
[Programmers]문자열 내림차순으로 배치하기(난이도:★★★★) (0) | 2022.05.16 |
---|---|
[Programmers]문자열 내 마음대로 정렬하기(난이도:★★★★) (0) | 2022.05.16 |
[Programmers]로또의 순위(난이도:★★★★) (0) | 2022.05.16 |
[Programmers]두개 뽑아서 더하기(난이도:★★★★) (0) | 2022.05.16 |
[Programmers]같은 숫자는 싫어(난이도:★★★★) (0) | 2022.05.16 |