안녕하세요. delay100 입니다!
미들러 문제
1번. H-Index
https://school.programmers.co.kr/learn/courses/30/lessons/42747
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 이해가 너무 안돼서 정기세션 동안 못 풀뻔했습니다..ㅠㅠ
n회 이상 인용한 논문에 대해 저장하는 list를 만들어 해결했습니다.
상세 내용은 코드에 주석으로 적어두었습니다.
class Solution {
public int solution(int[] citations) {
int[] list = new int[10001]; // n회 이상 인용한 배열 추가
// n회 이상 인용한 배열 추가
// 테스트케이스 1번의 경우 [3, 0, 6, 1, 5]
// list[0] = 5 -> 0회 이상 인용된 논문 5개
// list[1] = 4 -> 1회 이상 인용된 논문 4개
// list[2] = 3
// list[3] = 3
// list[4] = 2
// list[5] = 2
// list[6] = 1
// list[7] = 0
// ...(그 이상은 모두 0)
for(int i=0; i<citations.length; i++) {
for(int j=0; j<=citations[i]; j++) {
list[j]++;
}
}
int answer = 0;
for(int i=10000; i>0; i--) { // 저장한 list값을 거꾸로 확인. 최대 값을 찾으면 바로 종료하기 위함
if(list[i] >= i) { // i회 이상 인용된 논문이 i편 이상인 경우
answer = i; // 거꾸로 탐색하므로 가장 큰 값임
break;
}
}
return answer;
}
}
2번. 프로세스
https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
배열에서 순서가 정해지지 않은 값들 중에서 최대값의 위치를 구하는 것을 반복하여 풀었습니다.
최대값index 기준으로 뒤에 index를 먼저 탐색하여
동일한 우선순위인 경우, 최대값 기준으로 바로 다음에 있는 index에 순위를 추가할 수 있게끔 구현했습니다.
자세한 설명은 주석으로 설명해두었습니다.
class Solution {
public int solution(int[] priorities, int location) {
int[] list = new int[priorities.length];
int maxIndex = 0; // 현재 최대값이 위치한 index
int cnt = 1; // 현재 실행 순서
while(true) {
if(list[location] > 0) break; // 찾고자하는 위치에 순서가 정해지면 종료
// 최대값 찾기
int tempIndex = 0;
int max = 0;
// 1. 현재 최대값의 위치 ~ 배열의 끝
for(int i=maxIndex; i<priorities.length; i++) {
if(list[i]==0 && max < priorities[i]) {
max = priorities[i];
tempIndex = i;
}
}
// 2. 배열의 시작 ~ 현재 최대값의 위치
for(int i=0; i<maxIndex; i++) {
if(list[i]==0 && max < priorities[i]) {
max = priorities[i];
tempIndex = i;
}
}
// maxIndex 변경
maxIndex = tempIndex;
list[maxIndex] = cnt;
cnt++; // 현재 실행 순서 저장
}
// for(int i=0; i<list.length; i++) {
// System.out.print(list[i]+" ");
// }
return list[location];
}
}
마지막에 list를 출력해보면, 테스트케이스에 대해 위와 같이 결과가 나오게 됩니다.
+ 비기너 문제
1번.
https://school.programmers.co.kr/learn/courses/30/lessons/131128
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2번.
https://school.programmers.co.kr/learn/courses/30/lessons/142086
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
+ 챌린저 문제
1번.
https://www.acmicpc.net/problem/1436
1436번: 영화감독 숌
666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워
www.acmicpc.net
2번.
https://www.acmicpc.net/problem/11279
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
봐주셔서 감사합니다. 피드백 환영합니다.
'항해99 > 99club1기TIL' 카테고리의 다른 글
[99club/TIL] 5주차 - 수요일 TIL(Today I Learned) (0) | 2024.04.24 |
---|---|
[99club/TIL] 5주차 - 화요일 TIL(Today I Learned) (1) | 2024.04.23 |
[99club/TIL] 4주차 - 일요일 TIL(Today I Learned) (1) | 2024.04.22 |
[99club/TIL] 4주차 - 토요일 TIL(Today I Learned) (0) | 2024.04.20 |
[99club/TIL] 4주차 - 금요일 TIL(Today I Learned) (1) | 2024.04.19 |