728x90
https://school.programmers.co.kr/learn/courses/30/lessons/150370
문제 설명
today : 오늘 날짜
terms : 개인정보 타입에 따른 보관기간
privacies : 저장된 개인정보 리스트
result : 파기해야 할 개인정보 리스트 오름차순으로 정렬
terms를 참고해서 privacies에서 어떤 자료가 보관기간을 초과하였는지 result에 담아서 오름차순으로 출력하는 문제다.
문제 풀이
- 큰 숫자를 작은 숫자로 변환하기로 했다. yyyy년 mm월 dd일 -> ddddddd일
- terms는 딕셔너리에 담아서 [type : 유효기간]으로 저장했다.
- for문으로 privacies를 돌면서 파기해야 할 정보가 있다면 list에 담았다.
using System;
using System.Collections.Generic;
public class Solution {
public int[] solution(string today, string[] terms, string[] privacies) {
// today
string[] todays = today.Split(".");
int year = int.Parse(todays[0]);
int month = int.Parse(todays[1]);
int day = int.Parse(todays[2]);
int todaySum = (year * 12 * 28) + (month * 28) + day;
// terms
Dictionary<string, int> dicTerms = new Dictionary<string, int>();
foreach(string s in terms) {
string[] ss = s.Split(" ");
dicTerms[ss[0]] = int.Parse(ss[1]);
}
List<int> lAnswer = new List<int>();
// privacies
for(int i = 0; i < privacies.Length; i++) {
string[] p = privacies[i].Split(" "); // 2021.05.02, A
string[] ps = p[0].Split("."); // 2021, 05, 02
string type = p[1]; // A
int term = dicTerms[type]; // 6
int pYear = int.Parse(ps[0]); // 2021
int pMonth = int.Parse(ps[1]); // 5
int pDay = int.Parse(ps[2]); // 2
int sum = (pYear * 12 * 28) + ((pMonth + term) * 28) + pDay;
if(sum <= todaySum) {
lAnswer.Add(i + 1);
}
}
int[] answer = lAnswer.ToArray();
return answer;
}
}
고민
왜 if(sum <= todaySum)인지 이해를 못했다.
if(sum >= todaySum) 코드를 제출했더니 정답만 쇽쇽 피해가길래 부등호를 변경했더니 정답이됐다.
도무지 이해가 안되서 글을 적어봤는데, 응 내가 바보인게 맞았다.
todaySum은 오늘 날짜니까 sum이 todaySum보다 작으면 유효기간이 지난게 맞다.
today가 2022년 11월 30일이고 a라는 정보의 유효기간은 2022년 11월 15일인거지
이러면 a라는 정보의 유효기간을 day로만 만든게 2022년 11월 30일보다 작은게 맞으니까
if(sum <= todaySum)이 맞다.
ㅎ...
코딩머리가 없다고 우울했는데 이건 그냥 머리가 나쁜거 같다.
포기하지말고 열심히 하자..!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 신고 결과 받기(C#) (0) | 2023.12.27 |
---|---|
[프로그래머스] 달리기 경주(C#) (0) | 2023.12.11 |
[프로그래머스] 해시 - 전화번호 목록(feat. python) (0) | 2023.09.14 |
[프로그래머스] 해시 - 포켓몬(feat. python) (0) | 2023.09.07 |
[Python] 프로그래머스 - 해시 - 완주하지 못한 선수 (0) | 2023.08.30 |