티스토리 뷰
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/131127
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 문제 풀이 겸 회고
난독증이 있다면.... 나임 진짜로.. 이게 안될 리가 없는데.. 예제 TC는 맞는데 자꾸 제출하면 11번 빼고 다 틀렸습니다... 진짜 너무 짜증 나서 눈물을 머금고....ㅜㅗㅜ
보니깐 그냥 내가 잘못했다.. 문제에서 요구하는 답은 회원등록시 모두 할인받을 수 있는 총날짜의 수인데.. 난 처음으로 나오는 날짜 출력하는 줄 알고.. 계속 그것만 출력했다..
내가 로직이 잘못이 있었나.. 계속 계속 print 찍어가면서 디버깅해봤는데.. 진짜... 결과적으로는 문제에서 요구하는 답을 출력하지 않았다... 진짜 OMG..ㅎ...
이제 로직에 대해 설명하자면
우선 HashMap 자료구조를 이용했다! {키- 물품, 벨류 - 해당 개수} 이런식으로 이용했다.
{want[i] = 키값, number[i] = value값}
그리고 discount 배열 돌면서 여기서도 hashmap 자료구조를 사용했다.
2중 for문 돌면서 0~9, 1~10 이렇게 discount 배열 범위 넘어가지 않도록 돌면서 또 다른 hashmap에 값을 넣어줬다.
정현이가 원하는 정보가 들어있는 hashmap 과 10개씩 넣어준 hashmap 사이즈가 같을 경우라는 조건을 주었다.
이유는 정현이가 원하는 정보 hashmap 안에 10개씩 넣어준 hashmap이 포함되어 있을 수 있거나 10개 hashmap이 정현이 정보를 포함하고 있을 경우에도 정답처리를 해주는 로직이 포함되어있기 때문이다.
이럴 경우일 때를 대비해서
10개 씩 넣어준 hashmap 키값을 돌면서 원하는 hashmap 정보랑 같고(containsKey 사용) 혹여나 같은 정보가 있다 해도 개수가 다를 경우에는 더 이상 볼 필요 없으니깐 continue 해줬다.
만약 조건에 걸림없이 for문을 통해 다 돌았다면.. 이건 정현이가 할인받을 수 있는 정보와 일치하므로 Count를 세어줬다!
3. 코드
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<number.length;i++){
map.put(want[i],number[i]);
}
a:for(int i=0;i<discount.length;i++){
if(i+10> discount.length) break;
HashMap<String, Integer> hm = new HashMap<>();
for(int j=i;j<i+10;j++){
hm.put(discount[j],hm.getOrDefault(discount[j],0)+1);
}
if(hm.size() == map.size()){
for(String s: hm.keySet()){
if(!map.containsKey(s) || map.get(s)!= hm.get(s)){
continue a;
}
}
answer++;
}
}
return answer;
}
}
피드백은 언제나 환영입니다 :) 🌳
'algo > 프로그래머스' 카테고리의 다른 글
[프로그래머스] lv2 롤케이크 자르기(JAVA) (0) | 2023.01.12 |
---|---|
[프로그래머스] lv2 멀리 뛰기 (JAVA) (0) | 2022.12.01 |
[프로그래머스] lv2 두 큐의 합 같게 만들기 (JAVA) (2) | 2022.08.26 |
- Total
- Today
- Yesterday
- 18868 멀티버스 java
- AI교육
- NIPA
- AI-WEB 교육
- 16234 마법사 상어와 파이어볼
- 프로그래머스 롤케이크자르기
- 멀리 뛰기 자바
- AI캠프
- level2 롤케이크 자르기
- 자바 return
- 1개 Key 여러개 Value
- 백준 멀티버스 자바
- 유데미
- 할인행사 자바
- 메서드형 void
- Java 멀리 뛰기
- 마법사상어와 파이어볼
- 프로그래머스 할인행사
- 플그 멀리 뛰기
- IT개발캠프
- java 마법사 상어와 파이어볼
- 프론트엔드
- 멀티버스 java
- HashMap 자바
- 서울ICT이노베이션
- 정보통신산업진흥원
- JAVA 컬랙션
- 백엔드
- JAVA 할인행사
- java 멀티버스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |