๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ํ• ์ธ ํ–‰์‚ฌ

๋ฟŒ์•ผ._. 2026. 6. 29. 10:28
๋ฌธ์ œ
https://school.programmers.co.kr/learn/courses/30/lessons/131127
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 


< ํ• ์ธ ํ–‰์‚ฌ >

 

๋ฌธ์ œ ํ’€์ด (Java)

import java.util.*;

class Solution {
	public int solution(String[] want, int[] number, String[] discount) {
		int answer = 0;

		HashMap<String, Integer> map = new HashMap<>();
		for (int i = 0; i < 10; i++) {
			if (map.containsKey(discount[i])) {
				map.put(discount[i], map.get(discount[i]) + 1);
			} else {
				map.put(discount[i], 1);
			}
		}

		boolean flag = false;
		for (int i = 0; i < want.length; i++) {
			if (!map.containsKey(want[i]) || map.get(want[i]) != number[i]) {
				flag = true;
				break;
			}
		}

		if (!flag) {
			answer += 1;
		}

		for (int i = 10; i < discount.length; i++) {
			map.put(discount[i - 10], map.get(discount[i - 10]) - 1);

			if (map.containsKey(discount[i])) {
				map.put(discount[i], map.get(discount[i]) + 1);
			} else {
				map.put(discount[i], 1);
			}

			flag = false;
			for (int j = 0; j < want.length; j++) {
				if (!map.containsKey(want[j]) || map.get(want[j]) != number[j]) {
					flag = true;
					break;
				}
			}

			if (!flag) {
				answer += 1;
			}

		}
		return answer;
	}
}

 

10์ผ ๋™์•ˆ ํšŒ์› ์ž๊ฒฉ์„ ๋ถ€์—ฌํ•˜๋ฏ€๋กœ ์ผ๋‹จ ์ฒ˜์Œ 10์ผ ๋™์•ˆ์˜ ํ• ์ธํ•˜๋Š” ์ œํ’ˆ๊ณผ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด HashMap์— ์ €์žฅํ•œ๋‹ค. ์ •ํ˜„์ด๊ฐ€ ์›ํ•˜๋Š” ์ œํ’ˆ๊ณผ ์ˆ˜๋Ÿ‰์ด ์ผ์น˜ํ•˜๋‹ค๋ฉด answer+1์„ ํ•œ๋‹ค. ์ดํ›„ 10์ผ์”ฉ ์‚ดํŽด๋ณด๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ์•ž์˜ ํ•˜๋ฃจ์˜ ํ• ์ธํ•˜๋Š” ์ œํ’ˆ์„ ๋นผ๊ณ  ๋’ค์— ํ•˜๋ฃจ์˜ ํ• ์ธํ•˜๋Š” ์ œํ’ˆ์„ ๋”ํ•œ๋‹ค. ์ •ํ˜„์ด๊ฐ€ ์›ํ•˜๋Š” ์ œํ’ˆ๊ณผ ์ˆ˜๋Ÿ‰์ด ์ผ์น˜ํ•˜๋‹ค๋ฉด answer+1์„ ํ•˜๋ฉฐ, ์ด ๊ณผ์ •์„ ๋งˆ์ง€๋ง‰๋‚ ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค. ์ตœ์ข… answer์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 



 

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, 
https://school.programmers.co.kr/learn/challenges