본문 바로가기

TIL

[TIL]2024-4-17 / 72일차 - 최종 프로젝트 7주차 3일차

 

1. 오늘의 알고리즘 코드 카타 - 개인정보 수집 유효 기간

 

 

답안 :

 

//필요내용 = 오늘 날짜, 유효기간을 비교하기
//예시 정보 = A라는 약관의 유효기간 6달이니까
//키값 = A와 밸류 6이라는 딕셔너리로 저장할 생각
//거의 안써본 구조체에 관해 알게 되었는데
//DateTime <= 날짜와 시간으로 한 순간을 나타내는 구조체

using System;
using System.Collections.Generic;

public class Solution {
    public List<int> solution(string today, string[] terms, string[] privacies) {
        List<int> answer = new List<int>{}; //답 추가하기 편하도록 배열에서 리스트로 변경
        
        DateTime currentDate = DateTime.Parse(today); 
        //DateTime 구조체에서 제공하는 현재 날짜 기능
        
        Dictionary<string, int> termsDict = new Dictionary<string, int>();
        //약관을 받을 딕셔너리로 약관 종류(스트링 값)를 키로 기간을 밸류료 받는다
        
        for (int i = 0; i < terms.Length; i++)
        {
            string[] termInfo = terms[i].Split(' '); 
            //스페이스를 기준으로 자르기
            termsDict.Add(termInfo[0], int.Parse(termInfo[1]));
            //딕셔너리에 유효기간 개월수를 넣고 int로 변환
        }
        
        for (int i = 0; i < privacies.Length; i++)
        {
            DateTime initDate = DateTime.Parse(privacies[i].Split(' ')[0]);
            //첫 개인정보 수집 일자
            int termDate = termsDict[privacies[i].Split(' ')[1]];
            //비교할 유효기간
            DateTime expireDate = initDate.AddMonths(termDate);
            //첫 수집 일자 + 유효기간 달 수를 더해 종료일 계산
            
            if (currentDate >= expireDate)
            {
                answer.Add(i+1);
            }
        }
        
        return answer;
    }
}

 

2. 오늘의 작업

오늘도 이것저것 버그 수정이 이어졌다.

위에 표지와 같이 스테이지 추가 작업도 진행하였고,

이것저것 잡일을 하다보니 벌써 하루가 지나버렸다.

정말 이럴 땐 시간이 너무 빠르다

 

또한 버튼 이외의 트리거가 필요해 레버를 만들었다.

레버는 머리와 몸통으로 나뉘어

몸통은 맵에 설치되어 있고

머리는 분리되어 있는 것을 들고와서 몸통에 내려놓으면 자동으로 연결되어

레버로서 작동하게 된다.