Jungle Dessert TIL

모기·2025년 7월 30일

Plan

시간계획
~ 10출근
10 ~ 12코딩테스트 연습
12 ~ 13점심
13 ~ 14코딩테스트 공부
14 ~ 16이력서 작성
16 ~ 18회고 및 벨로그 정리
18 ~ 19저녁
19 ~ 23.5개인 공부
23.5 ~탄력적 퇴근

계획을 다 짜고보니 하루가 짧긴하다.

어쩌다보니 게임 프로젝트도 만들게 됐고, 이력서 스터디도 하게 됐다.
그래서 할 것이 무지 많은데
코딩 테스트 문제를 풀고 보니 잠깐이면 다 까먹겠다는 느낌이 들어 기록하려한다.

Tool

Coding Test

NeetCode

원래는 백준이나 다른 사이트의 문제를 풀려고 했는데,
동동주의 강한 추천으로 풀기시작했다.

나름의 커리큘럼이 있어서 체계적으로 풀어나갈 수 있는게 장점이다.
영어 문제는 단?점이다.

Resume

Saramin

코치님께서도 쓰시는 플랫폼이라고 하여 사용하게 됐다.

Wanted

개발자 채용에 특화된 플랫폼이라고 한다.

LinkedIn

우리반 사람들이 많이 쓰는 것 같은데, 다양한 곳의 취업을 노려볼 수 있어서 좋아보인다.

Review

mogiyoon

TIL

Wed

Coding Test

  1. GroupAnagram

Given an array of strings strs, group all anagrams together into sublists. You may return the output in any order.

An anagram is a string that contains the exact same characters as another string, but the order of the characters can be different.

위 문제는 시공간 복잡도를 고려하지 않으면 풀긴 풀 수 있을 것 같지만
시간복잡도 (m*n)에 공간복잡도 (m)으로 풀라길래 최대한 가까운 방법을 찾아보려했다.

여기서 m은 스트링의 수, n은 스트링의 길이이다.

그래서 처음에 고려했던 방법은
각 스트링별로 스트링 내부에서 정렬해서 해당 값을 사용하는 방법이었고

두 번째 고려한 방법은
ascii코드를 사용해서 각 스트링의 아스키 코드합을 딕셔너리 키로 저장을 하고, 리스트를 추출한 뒤에, 리스트 내에서 아나그램이 아닌 것을 다시 찾으려고 했다.

근데
굳이 귀찮게 그런 방법을 사용할 필요가 없었다.

첫 번째, 두 번째 방법을 섞은 방법을 썼다.
스트링 내부에서 정렬한 데이터를 키로(ex. cats => acts), 그리고 값에 리스트 자료 구조를 사용해서 원래 스트링을 (ex. cats) 값으로 넣었다.

마지막에 리스트만 추출하면 된다.

사실 이걸 정리한 이유는
파이썬 코딩할 때 필요한 함수들을 기억하기 위해서이다.

from collections import defaultdict

dic = defaultdict(list)
key = "".join(sorted(item))
list = list(dic.values())

defaultdic은 키가 없을 때 자동으로 추가해주는 딕셔너리
join은 리스트를 하나의 스트링으로 합쳐주는 함수
list(dic.values)는 딕셔너리의 value만 꺼내서 리스트로 만들어주는 함수이다.

Resume

오늘은 만능 이력서 틀을 만들어볼 생각이다. 대략 700자 정도 적고, 회사에 따라서 자유롭게 적용할 수 있는 틀을 만들 예정이다.

커피챗을 통해 얻은 조언을 바탕으로 작성할 예정이다.

그래서 개발을 좋아하는 이유, 이직을 하게 된 계기, 정글에서 배우게 된 것을 중심으로 700자를 작성했다.

Retrospect

아마 오늘은 4주차부터 들여다볼 것 같다.
ISA와 명령어/데이터 캐시에 대한 내용을 수정했다.
간만에 보니까 쉽지가 않다.

RISC와 CISC를 봤는데,
RISC는 간단한 ISA라 메모리 접근과 연산이 분리되어 있다.
컴퓨터의 성능이 좋지 않을 때 사용하며 레지스터의 역할이 구체적이고 명확하다.

CISC는 복잡한 ISA로 메모리 접근과 연산이 동시에 이루어진다.
따라서 최적화가 잘 되어있어 메모리 낭비가 없으며 고급 언어와 호환성이 좋다.

명령어/데이터 캐시는 L1 캐시에 존재하는 다른 캐시로
명령어 캐시는 L1 I-Cache에, 데이터 캐시는 L1 D-Cache에 저장된다.
그리고 L2, L3 캐시는 명령어와 데이터를 나누어 저장하지는 않는다.

CPU는 캐시 라인 단위로 가져오므로
명령어는 nop 명령어, 데이터는 패딩 데이터를 통해 캐시 라인을 정렬한다.
말록랩에서 패딩 데이터 정렬을 했던 기억이 새록새록 난다.
그리고 비슷한 맥락으로 핀토스에서 페이지 단위 정렬을 했던 기억도 난다.

Self-Directed Learning

가칭 '프로젝트 M'을 조금 건드렸고
이력서 특강을 듣고, 이력서 스터디를 조금했다.

프로젝트 M은 잠깐 쉬기로 하고 이력서와 포트폴리오에 좀 더 집중할 예정이다.

Thur

Resume

특강을 바탕으로 이력서를 쓰려한다.
아마 오늘/내일은 하루종일 이력서와 포트폴리오를 만드는 데에 집중하지 않을까 한다.

profile
안녕

0개의 댓글