โ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/131127
์ฑ๋ฅ ์์ฝ
๋ฉ๋ชจ๋ฆฌ: 141 MB, ์๊ฐ: 111.64 ms
๋ฌธ์ ์ค๋ช
XYZ ๋งํธ๋ ์ผ์ ํ ๊ธ์ก์ ์ง๋ถํ๋ฉด 10์ผ ๋์ ํ์ ์๊ฒฉ์ ๋ถ์ฌํฉ๋๋ค. XYZ ๋งํธ์์๋ ํ์์ ๋์์ผ๋ก ๋งค์ผ ํ ๊ฐ์ง ์ ํ์ ํ ์ธํ๋ ํ์ฌ๋ฅผ ํฉ๋๋ค. ํ ์ธํ๋ ์ ํ์ ํ๋ฃจ์ ํ๋์ฉ๋ง ๊ตฌ๋งคํ ์ ์์ต๋๋ค. ์๋ฐํ ์ ํ์ด๋ ์์ ์ด ์ํ๋ ์ ํ๊ณผ ์๋์ด ํ ์ธํ๋ ๋ ์ง์ 10์ผ ์ฐ์์ผ๋ก ์ผ์นํ ๊ฒฝ์ฐ์ ๋ง์ถฐ์ ํ์๊ฐ์ ์ ํ๋ ค ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ ํ์ด๊ฐ ์ํ๋ ์ ํ์ด ๋ฐ๋๋ 3๊ฐ, ์ฌ๊ณผ 2๊ฐ, ์ 2๊ฐ, ๋ผ์ง๊ณ ๊ธฐ 2๊ฐ, ๋๋น 1๊ฐ์ด๋ฉฐ, XYZ ๋งํธ์์ 14์ผ๊ฐ ํ์์ ๋์์ผ๋ก ํ ์ธํ๋ ์ ํ์ด ๋ ์ง ์์๋๋ก ์นํจ, ์ฌ๊ณผ, ์ฌ๊ณผ, ๋ฐ๋๋, ์, ์ฌ๊ณผ, ๋ผ์ง๊ณ ๊ธฐ, ๋ฐ๋๋, ๋ผ์ง๊ณ ๊ธฐ, ์, ๋๋น, ๋ฐ๋๋, ์ฌ๊ณผ, ๋ฐ๋๋์ธ ๊ฒฝ์ฐ์ ๋ํด ์์๋ด ์๋ค. ์ฒซ์งธ ๋ ๋ถํฐ ์ดํ ๊ฐ์๋ ๋๋น๊ฐ ํ ์ธํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฒซ์งธ ๋ ์๋ ํ์๊ฐ์ ์ ํ์ง ์์ต๋๋ค. ๋์งธ ๋ ๋ถํฐ ์ดํ ๊ฐ์๋ ๋ฐ๋๋๋ฅผ ์ํ๋ ๋งํผ ํ ์ธ๊ตฌ๋งคํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์งธ ๋ ์๋ ํ์๊ฐ์ ์ ํ์ง ์์ต๋๋ค. ์ ์งธ ๋ , ๋ท์งธ ๋ , ๋ค์ฏ์งธ ๋ ๋ถํฐ ๊ฐ๊ฐ ์ดํ์ ์ํ๋ ์ ํ๊ณผ ์๋์ด ์ผ์นํ๊ธฐ ๋๋ฌธ์ ์ ์ค ํ๋ฃจ์ ํ์๊ฐ์ ์ ํ๋ ค ํฉ๋๋ค.
์ ํ์ด๊ฐ ์ํ๋ ์ ํ์ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด want
์ ์ ํ์ด๊ฐ ์ํ๋ ์ ํ์ ์๋์ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด number
, XYZ ๋งํธ์์ ํ ์ธํ๋ ์ ํ์ ๋ํ๋ด๋ ๋ฌธ์์ด ๋ฐฐ์ด discount
๊ฐ ์ฃผ์ด์ก์ ๋, ํ์๋ฑ๋ก์ ์ ํ์ด๊ฐ ์ํ๋ ์ ํ์ ๋ชจ๋ ํ ์ธ ๋ฐ์ ์ ์๋ ํ์๋ฑ๋ก ๋ ์ง์ ์ด ์ผ์๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํ์์ค. ๊ฐ๋ฅํ ๋ ์ด ์์ผ๋ฉด 0์ return ํฉ๋๋ค.
์ ํ์ฌํญ
- 1 ≤
want
์ ๊ธธ์ด =number
์ ๊ธธ์ด ≤ 10- 1 ≤
number
์ ์์ ≤ 10 number[i]
๋want[i]
์ ์๋์ ์๋ฏธํ๋ฉฐ,number
์ ์์์ ํฉ์ 10์ ๋๋ค.
- 1 ≤
- 10 ≤
discount
์ ๊ธธ์ด ≤ 100,000 want
์discount
์ ์์๋ค์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ ๋๋ค.- 1 ≤
want
์ ์์์ ๊ธธ์ด,discount
์ ์์์ ๊ธธ์ด ≤ 12
- 1 ≤
์ ์ถ๋ ฅ ์
want | number | discount | result |
["banana", "apple", "rice", "pork", "pot"] | [3, 2, 2, 2, 1] | ["chicken", "apple", "apple", "banana", "rice", "apple", "pork", "banana", "pork", "rice", "pot", "banana", "apple", "banana"] | 3 |
["apple"] | [10] | ["banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana"] | 0 |
โ๐ปํ์ด
want = ["banana", "apple", "rice", "pork", "pot"], number = [3, 2, 2, 2, 1]
์ํ๋ ์ ํ๊ณผ ์๋์ ํด์๋งต์ผ๋ก ๋ง๋ ๋ค.
discount = ["chicken", "apple", "apple", "banana", "rice", "apple", "pork", "banana", "pork",
"rice", "pot", "banana", "apple", "banana"]
1~10, 2~11, 3~12, 4~13, 5~14 ์ค ์ฐ์ 10์ผ ๋์ ์ํ๋ ์ ํ ์ ๋ถ๋ฅผ ํ ์ธํด์ ์ด ์ ์๋์ง ํ์ธํ๋ค.
1~10์ผ์ ๋ณด๋ฉด ์๊ณผ ์ฌ๊ณผ ์ด์ธ์๋ ํ ์ธํด์ ์ด ์ ์๋ค.
2~11์ ๋ณด๋ฉด ๋ฐ๋๋๋ง ์ด ์ ์๋ค.
3~12์ผ์ ๋ณด๋ฉด ๋ชจ๋ ํ ์ธํด์ ์ด ์ ์๋ค.
์ด๋ฐ ์์ผ๋ก ํ ์ธํด์ ์ด ์ ์๋ ์ ํ์ ์๋์ ๊ณ์ฐํ์ ๋,
์ํ๋ ์ ํ์ ์๋๊ณผ ํ ์ธํด์ ์ด ์ ํ์ ์๋์ด ๋ง๋ค๋ฉด answer + 1์ ํ๋ค.
๐ป์ฝ๋
import java.util.*;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
int days = 10;
HashMap<String, Integer> m = new HashMap<>();
for(int i = 0; i < want.length; i++)
m.put(want[i], number[i]);
for(int i = 0; i < discount.length - 9; i++){
HashMap<String, Integer> d = new HashMap<>();
for(int j = 0; j < 10; j++){
d.put(discount[i + j], d.getOrDefault(discount[i + j], 0) + 1);
}
boolean sign = true;
for(String k : m.keySet())
if(d.get(k) != m.get(k)){
sign = false;
break;
}
answer += sign ? 1 : 0;
}
return answer;
}
}
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] [3์ฐจ] ์์ถ/Python - Lv.2 (1) | 2024.10.24 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ฐฐ์์/Java - Lv.2 (0) | 2024.10.24 |
[๋ฐฑ์ค] 1904.01ํ์ผ/Java - Silver3 (0) | 2024.10.15 |
[๋ฐฑ์ค] 9461.ํ๋๋ฐ ์์ด/Java - Silver3 (0) | 2024.10.15 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฐ์ฅ ํฐ ์/Java - Lv.2 (0) | 2024.10.10 |