XYZ λ§νΈλ μΌμ ν κΈμ‘μ μ§λΆνλ©΄ 10μΌ λμ νμ μ격μ λΆμ¬ν©λλ€. XYZ λ§νΈμμλ νμμ λμμΌλ‘ λ§€μΌ ν κ°μ§ μ νμ ν μΈνλ νμ¬λ₯Ό ν©λλ€. ν μΈνλ μ νμ ν루μ νλμ©λ§ ꡬ맀ν μ μμ΅λλ€. μλ°ν μ νμ΄λ μμ μ΄ μνλ μ νκ³Ό μλμ΄ ν μΈνλ λ μ§μ 10μΌ μ°μμΌλ‘ μΌμΉν κ²½μ°μ λ§μΆ°μ νμκ°μ μ νλ € ν©λλ€.
μλ₯Ό λ€μ΄, μ νμ΄κ° μνλ μ νμ΄ λ°λλ 3κ°, μ¬κ³Ό 2κ°, μ 2κ°, λΌμ§κ³ κΈ° 2κ°, λλΉ 1κ°μ΄λ©°, XYZ λ§νΈμμ 14μΌκ° νμμ λμμΌλ‘ ν μΈνλ μ νμ΄ λ μ§ μμλλ‘ μΉν¨, μ¬κ³Ό, μ¬κ³Ό, λ°λλ, μ, μ¬κ³Ό, λΌμ§κ³ κΈ°, λ°λλ, λΌμ§κ³ κΈ°, μ, λλΉ, λ°λλ, μ¬κ³Ό, λ°λλμΈ κ²½μ°μ λν΄ μμλ΄ μλ€. 첫째 λ λΆν° μ΄ν κ°μλ λλΉκ° ν μΈνμ§ μκΈ° λλ¬Έμ 첫째 λ μλ νμκ°μ μ νμ§ μμ΅λλ€. λμ§Έ λ λΆν° μ΄ν κ°μλ λ°λλλ₯Ό μνλ λ§νΌ ν μΈκ΅¬λ§€ν μ μκΈ° λλ¬Έμ λμ§Έ λ μλ νμκ°μ μ νμ§ μμ΅λλ€. μ μ§Έ λ , λ·μ§Έ λ , λ€μ―μ§Έ λ λΆν° κ°κ° μ΄νμ μνλ μ νκ³Ό μλμ΄ μΌμΉνκΈ° λλ¬Έμ μ μ€ ν루μ νμκ°μ μ νλ € ν©λλ€.
μ νμ΄κ° μνλ μ νμ λνλ΄λ λ¬Έμμ΄ λ°°μ΄ want
μ μ νμ΄κ° μνλ μ νμ μλμ λνλ΄λ μ μ λ°°μ΄ number
, XYZ λ§νΈμμ ν μΈνλ μ νμ λνλ΄λ λ¬Έμμ΄ λ°°μ΄ discount
κ° μ£Όμ΄μ‘μ λ, νμλ±λ‘μ μ νμ΄κ° μνλ μ νμ λͺ¨λ ν μΈ λ°μ μ μλ νμλ±λ‘ λ μ§μ μ΄ μΌμλ₯Ό return νλ solution
ν¨μλ₯Ό μμ±νμμ€. κ°λ₯ν λ μ΄ μμΌλ©΄ 0μ return ν©λλ€.
want
μ κΈΈμ΄ = number
μ κΈΈμ΄ β€ 10number
μ μμ β€ 10number[i]
λ want[i]
μ μλμ μλ―Ένλ©°, number
μ μμμ ν©μ 10μ
λλ€.discount
μ κΈΈμ΄ β€ 100,000want
μ discount
μ μμλ€μ μνλ²³ μλ¬Έμλ‘ μ΄λ£¨μ΄μ§ λ¬Έμμ΄μ
λλ€.want
μ μμμ κΈΈμ΄, discount
μ μμμ κΈΈμ΄ β€ 12want | 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 |
discount
μ 맨 μ μμλΆν° μΆμΆν΄ want
μ ν¬ν¨λμ΄ μλ μ§ νμΈνκ³ , λ§μ½ μλ€λ©΄ κ·Έ μ νμ κ°μλ₯Ό νμ
ν΄ νλμ© μ°¨κ°ν΄ λκ°λ©΄ λ κ² κ°μλ€.
μ¬κ³ μ νλ μ νμ λͺ¨λ μ° κ²½μ°λ₯Ό νμΈνκΈ° μν΄ nowCount
λ³μλ₯Ό νλ μμ±ν΄, μ¬μΌνλ 물건μ μ΄ κ°μλ‘ μ΄κΈ°νλ₯Ό ν΄ μ€ λ€, μνλ 물건μ νλμ© μ΄ λλ§λ€ 1μ© κ°μνλλ‘ κ΅¬ννμλ€.
κ·Έλ¦¬κ³ , λ°λ³΅λ¬Έμ λμμ μ΄ nowCount
κ° 0μΈμ§λ₯Ό νμΈν΄, μ¬κ³ μ νλ μ νμ λͺ¨λ μλ μ§μ λν μ¬λΆλ₯Ό νμΈν μ μμλ€.
λ¨, νμ¬ ν μΈ μ€μΈ μ νμ΄ want
λ°°μ΄μ ν¬ν¨λμ΄ μλ μ§ νμΈνλ κ³Όμ μμ forλ¬Έμ μ¬μ©νλ©΄ μκ° λ³΅μ‘λκ° μ»€μ§ κ±° κ°μ
μ νμ΄κ° μ¬κ³ μ νλ μ νκ³Ό κ°μλ₯Ό key-valueλ‘ κ°μ§λ HashMapμ νλ λ§λ€κΈ°λ‘ νλ€.
HashMap<String, Integer> wantMap = new HashMap<>();
κ·Έλ¦¬κ³ λμ, discount
λ°°μ΄μ μνν΄μΌ νλλ°
μλ°ν μ νμ΄λ μμ μ΄ μνλ μ νκ³Ό μλμ΄ ν μΈνλ λ μ§μ 10μΌ μ°μμΌλ‘ μΌμΉν΄μΌ νλ€ νμΌλ―λ‘,
μνν λ°°μ΄μ λ²μλ₯Ό λ€μκ³Ό κ°μ΄ μ§μ ν΄ μ£Όμλ€.
for (int i = 0; i <= discount.length - totalCount; i++)
μ¬κΈ°μ totalCount
λ νμν μ νμ μ΄ κ°μμΈλ°, discount
μ κΈΈμ΄μμ μ΄λ₯Ό λΉΌλ©΄, μ°μ 10μΌμ 보μ₯νλ λ²μ μμμ μνν μ μλ€.
μλ₯Ό λ€μ΄, discount
μ κΈΈμ΄κ° 14μ΄κ³ , μνλ μ νμ΄ 10κ°λΌλ©΄,
discount
μ 4λ³΄λ€ ν° μΈλ±μ€μμλ 10μΌ μ°μμΌλ‘ μ΄ μ μλ κ²½μ°μ μκ° μλ€.
λ€μμΌλ‘, HashMapμ μ¬κ³ μ νλ μ νμ μ΄λ¦κ³Ό κ°μλ₯Ό μ μ₯ν΄ μ£Όμλ€.
for (int k = 0; k < want.length; k++) {
wantMap.put(want[k], number[k]);
}
μ΄μ , discount
μ i
λ²μ§Έ μμλΆν° 10κ°μ μμμ λ°©λ¬Ένλ©΄μ νμ¬ ν μΈνλ μ νμ΄ wantMap
μ μλ μ§ νμΈν΄ μ£Όμ΄μΌ νλ€.
κ·Έλμ 쑰건문μ λ κ°λ‘ λΆκΈ°ν΄ μ£Όμλ€.
wantMap
μ μ‘΄μ¬νμ§ μκ±°λ, valueκ°(ν΄λΉ μ νμ νμ¬ νμν κ°μ)κ° 0μ΄νμΈ κ²½μ°wantMap
μ μ‘΄μ¬νκ³ , valueκ°(ν΄λΉ μ νμ νμ¬ νμν κ°μ)κ° 1μ΄μμΈ κ²½μ°for (int j = i; j < i + 10; j++) {
if (wantMap.containsKey(discount[j]) == false || wantMap.get(discount[j]) <= 0) {
break;
}
else {
wantMap.put(discount[j], wantMap.get(discount[j]) - 1);
nowCount--;
}
}
첫 λ²μ§Έ 쑰건μ κ²½μ°μλ ν΄λΉ μ νμ ꡬ맀ν νμκ° μκ³ , 10μΌ μ°μ κ΅¬λ§€κ° μ λ λΆκ°λ₯νκΈ° λλ¬Έμ,
λ°λ³΅λ¬Έμ λ°λ‘ λΉ μ Έλμ€λλ‘ ν΄μ£Όμλ€.
λ λ²μ§Έ 쑰건μ κ²½μ°μλ ν΄λΉ μ νμ ꡬ맀ν νμκ° μλ κ²½μ°μ΄κΈ° λλ¬Έμ, wantMap
μμ ν΄λΉ μ νμ valueκ°(νμν κ°μ)μ 1μ λΉΌμ£Όκ³ , nowCount
μλ 1μ λΉΌμ€μΌλ‘μ¨, ν΄λΉ μ νμ ꡬ맀νλ€λ μ 보λ₯Ό μ
λ°μ΄νΈ ν΄μ£Όμλ€.
λ§μ§λ§μΌλ‘, nowCount
κ° 0μ΄λ©΄, μ¦ μ¬μΌ νλ μ νμ λͺ¨λ ꡬ맀νλ€λ©΄, μ΅μ’
answer
μ 1μ λν΄μ€μΌλ‘μ¨,
10μΌ μ°μμΌλ‘ ν μΈν μ νμ ꡬ맀ν κ²½μ°μ μλ₯Ό μ¦κ°μμΌμ£Όμλ€.
if (nowCount == 0) {
answer++;
}
import java.util.HashMap;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
int totalCount = 0;
int nowCount = 0;
HashMap<String, Integer> wantMap = new HashMap<>();
// νμν 물건μ μ΄ κ°μ
for (int num : number) {
totalCount += num;
}
for (int i = 0; i <= discount.length - totalCount; i++) {
// hashMap μ
λ ₯
for (int k = 0; k < want.length; k++) {
wantMap.put(want[k], number[k]);
}
nowCount = 10;
for (int j = i; j < i + 10; j++) {
if (wantMap.containsKey(discount[j]) == false || wantMap.get(discount[j]) <= 0) {
break;
}
else {
wantMap.put(discount[j], wantMap.get(discount[j]) - 1);
nowCount--;
}
}
if (nowCount == 0) {
answer++;
}
}
return answer;
}
}
곡λ κ·Έλ‘λ°~