02
05

과정명 : 내일배움캠프 Unity 게임개발 3기

전체진행도 : 30일차

부분진행도 : Chapter4.1 - 3일차

작성일자 : 2024.02.05(월)

개발일지 목록 : 클릭


1. 진행중인 과정에 대해

강의지급 및 개인과제 3/5일차, 서바이벌 3D게임 강의를 학습중이고, 개인과제는 UI구성까지만 마치고 스크립트 작성을 보류중이다. 슬슬 밤샘각이 보인다. 강의가 어렵지만 굉장히 멋진 구조의 디자인을 하고 있어 보이기 때문에 확실히 학습하면 굉장히 도움이 될 것이다.

+ 오후에 핫식스 도핑하면서 버티던 도중에 눈이 번득 뜨이는 이벤트가 발생했다.

갑자기 분위기 우수 TIL(Today I Learned)

일단 개발일지 목록이 업데이트가 덜 되어 있어서 호다닥 작성했지만 나머지는...

더보기
막 3일전 질러놓은 게임글
NSFW 프로젝트
유익하지만 음원소스가 서브컬쳐
가장 최근 글이 방주 관리 프로젝트
최고 인기글 제목도 부끄러움
도메인도 부끄러움

이쯤 되면 그냥 당당해지기로 했다

2. 오늘 학습에 대해

아침 CodeSolve

바쁘더라도 한 문제 정도는 30분정도 써서 풀어도 괜찮은 것 같다.

다른 날과 마찬가지로 주석으로 상세 내용을 정리한다.

전엔 하지 않았던, 솔루션을 미리 작성해두고 과정을 따라가는 방식을 해 보니 괜찮은 것 같다.

코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT > 신고 결과 받기

using System;
using System.Collections.Generic;

public class Solution {
    public int[] solution(string[] id_list, string[] report, int k) {
        int[] answer = new int[id_list.Length];

        // 솔루션
        // Dict1 : {"{ID}":{받을 메시지 수}}
        // Dict2 : {"{ID}":{List<string> ID를 신고한사람 목록}}
        // 1. Dict1과 Dict2를 초기화
        // 2. foreach문으로 report 순회하며 Dict2를 채운다
        // 3. Dict2를 순회하며 List의 길이가 k 이상일 경우,
        //    해당 리스트를 키로 갖는 Dict1의 값을 모두 1 더한다

        // 1. Dict1과 Dict2를 초기화
        // (Dictionary 안의 자료형으로 List<> 그냥 써 봤는데 왜 되는거야...)
        Dictionary<string, int> dict1 = new Dictionary<string, int>();
        Dictionary<string, List<string>> dict2 = new Dictionary<string, List<string>>();
        foreach(string id in id_list){
            dict1[id] = 0;
            dict2[id] = new List<string>(){};
            // Console.WriteLine(dict2[id].Count);
        }

        // 2. foreach문으로 report 순회하며 Dict2를 채운다
        foreach(string msg in report){
            string[] parts = msg.Split(' ');
            string userA = parts[0];
            string userB = parts[1];
            if(!dict2[userB].Contains(userA))
                dict2[userB].Add(userA);
        }

        // 3. Dict2를 순회하며 List의 길이가 k 이상일 경우,
        //    해당 리스트를 키로 갖는 Dict1의 값을 모두 1 더한다
        // 찾아보기: 사전형의 순회
        foreach(var item in dict2){
            if(item.Value.Count>=k){
                foreach(string user in item.Value){
                    dict1[user] += 1;
                }
            }
        }

        // 4. answer 배열에 dict1의 내용 옮기기
        for(int i=0;i<id_list.Length;i++){
            answer[i] = dict1[id_list[i]];
        }

        return answer;
    }
}
  • Dictionary 안의 자료형으로 제네릭 (예:List<>) 을 사용 해 보았다.
    • Dictionary<string, List<string>> dict2 = new Dictionary<string, List<string>>();
  • 사전형의 순회법
    • foreach(var item in dict2){ //Item.Key나 Item.Value로 접근 }

3. 과제에 대해

- 주어진 강의 흡수(남은 게 많다. 큰일. 오늘은 밤샘이다. 그래도 방향성은 잡힌 것 같다.)

- 개인과제 스크립트 부분 이어서 착수

반응형
COMMENT