01-09 04:37
Recent Posts
Recent Comments
관리 메뉴

miinsun

[Algorithm]μ•Œκ³ λ¦¬μ¦˜ μžλ°”_42 응급싀 λ³Έλ¬Έ

Algorithm/Java

[Algorithm]μ•Œκ³ λ¦¬μ¦˜ μžλ°”_42 응급싀

miinsun 2022. 1. 10. 21:57

 

πŸ’¬ λ¬Έμ œ μ„€λͺ…

메디컬 병원 μ‘κΈ‰μ‹€μ—λŠ” μ˜μ‚¬κ°€ ν•œ λͺ…밖에 μ—†μŠ΅λ‹ˆλ‹€. 응급싀은 ν™˜μžκ°€ λ„μ°©ν•œ μˆœμ„œλŒ€λ‘œ μ§„λ£Œλ₯Ό ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μœ„ν—˜λ„κ°€ 높은 ν™˜μžλŠ” 빨리 μ‘κΈ‰μ‘°μΉ˜λ₯Ό μ˜μ‚¬κ°€ ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이런 문제λ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•΄ 응급싀은 λ‹€μŒκ³Ό 같은 λ°©λ²•μœΌλ‘œ ν™˜μžμ˜ μ§„λ£Œμˆœμ„œλ₯Ό μ •ν•©λ‹ˆλ‹€.
• ν™˜μžκ°€ μ ‘μˆ˜ν•œ μˆœμ„œλŒ€λ‘œμ˜ λͺ©λ‘μ—μ„œ 제일 μ•žμ— μžˆλŠ” ν™˜μžλͺ©λ‘μ„ κΊΌλƒ…λ‹ˆλ‹€.
• λ‚˜λ¨Έμ§€ λŒ€κΈ° λͺ©λ‘μ—μ„œ κΊΌλ‚Έ ν™˜μž 보닀 μœ„ν—˜λ„κ°€ 높은 ν™˜μžκ°€ μ‘΄μž¬ν•˜λ©΄ λŒ€κΈ°λͺ©λ‘ 제일 λ’€λ‘œ λ‹€μ‹œ λ„£μŠ΅λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ μ§„λ£Œλ₯Ό λ°›μŠ΅λ‹ˆλ‹€.
• μ¦‰ λŒ€κΈ°λͺ©λ‘μ— 자기 보닀 μœ„ν—˜λ„κ°€ 높은 ν™˜μžκ°€ 없을 λ•Œ μžμ‹ μ΄ μ§„λ£Œλ₯Ό λ°›λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€.

ν˜„μž¬ Nλͺ…μ˜ ν™˜μžκ°€ λŒ€κΈ°λͺ©λ‘μ— μžˆμŠ΅λ‹ˆλ‹€. Nλͺ…μ˜ λŒ€κΈ°λͺ©λ‘ μˆœμ„œμ˜ ν™˜μž μœ„ν—˜λ„κ°€ 주어지면, λŒ€κΈ°λͺ©λ‘μƒμ˜ M번째 ν™˜μžλŠ” λͺ‡ 번째둜 μ§„λ£Œλ₯Ό λ°›λŠ”μ§€ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

λŒ€κΈ°λͺ©λ‘μƒμ˜ Mλ²ˆμ§ΈλŠ” λŒ€κΈ°λͺ©λ‘μ˜ 제일 처음 ν™˜μžλ₯Ό 0번째둜 κ°„μ£Όν•˜μ—¬ ν‘œν˜„ν•œ κ²ƒμž…λ‹ˆλ‹€.

 

 

 

πŸ”¨ μž…μΆœλ ₯ 예

μž…λ ₯ -첫 쀄에 μžμ—°μˆ˜ N(5<=N<=100)κ³Ό M(0<=M<N) μ£Όμ–΄μ§‘λ‹ˆλ‹€.

두 번째 쀄에 μ ‘μˆ˜ν•œ μˆœμ„œλŒ€λ‘œ ν™˜μžμ˜ μœ„ν—˜λ„(50<=μœ„ν—˜λ„<=100)κ°€ μ£Όμ–΄μ§‘λ‹ˆλ‹€.

μœ„ν—˜λ„λŠ” 값이 높을 수둝 더 μœ„ν—˜ν•˜λ‹€λŠ” λœ»μž…λ‹ˆλ‹€. 같은 κ°’μ˜ μœ„ν—˜λ„κ°€ μ‘΄μž¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ μž…λ ₯ 1)

5 2
60 50 70 80 90

μ˜ˆμ‹œ μž…λ ₯ 2)

6 3
70 60 90 60 60 60

좜λ ₯ -M번째 ν™˜μžμ˜ λͺ‡ 번째둜 μ§„λ£Œλ°›λŠ”μ§€ 좜λ ₯ν•˜μ„Έμš”.

μ˜ˆμ‹œ 좜λ ₯ 1)

3

μ˜ˆμ‹œ 좜λ ₯ 1)

4

 

​

πŸ’» Solution.java

import java.util.*;

class Person{
	int id;
	int priority;
	public Person(int id, int priority) {
		this.id = id;
		this.priority = priority;
	}
}

public class Main {
	public int solution(int n, int m, int [] arr) {
		int answer = 1;
		Queue<Person> q = new LinkedList<>();
		
		for(int i = 0; i < n; i++) {
			q.offer(new Person(i, arr[i]));
		}
		
		while(!q.isEmpty()) {
			Person tmp = q.poll();
			for(Person x : q) {
				if(x.priority > tmp.priority) {
					q.offer(tmp);
					tmp = null;
					break;
				}	
			}
			
			if(tmp != null) {
				if(tmp.id == m) return answer;
				else answer++;
			}
		}
        return answer;
	}
	
	public static void main(String[] args){
		Main main  = new Main();
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int m = sc.nextInt();
		int[] arr = new int[n];
		
		for(int i = 0; i < n; i++) {
			arr[i] = sc.nextInt();
		}
		
		System.out.println(main.solution(n, m, arr));
		
		sc.close();
		return ;
	}
}

 

 

 

Comments