전체 글 161

WIL 8월 마감 , 9월 시작

8월 마감 벌써 8월이 다 지나갔다. 매주 회고를 하려고했었는데 지난주에는 너무 정신이 없어서(변명1) 못했다.. 개인적인 일 + 회사 일 + 공부를 하다보니 진짜 시간이 너무 너무 모자르다. 8월시작과 함께 보던 클린코드 강의도 전부 수강하고, 지금은 이제 SQL강의를 사서 듣고 있다. 강의를 듣기만한다해서 내것이 되는 것이 아니지만, 책도 보고, 강의도 보고 하니 확실히 머리 속에 조금씩 각인이 되어가고 있는 것 같다.(라고 정신승리중..^>^) 원래는 클린코드 강의를 다 듣고나서 새로운 강의 말고 계속해서 클린코드 강의를 반복해서 듣거나, 책과 문서(코드)를 보려고했었다. 그런데 회사에서 (드디어 Docker 개발 환경 구축을 마쳤다!!) 소스코드를 보기 시작하고, 앞으로 내게 주어질 일들 중 Ra..

회고/WIL 2022.09.04

[WIL] 클린아키텍처, 주간보고

이번 주는 광복절이 껴있어그런지 정말 한주가 빠르게 지나갔다. 벌써 8월의 끝이보인다니... 믿을 수 없다. 할건 많은데 시간은 너무나도 모자르다.. 이번주부터 다시 독서를 시작했다. 업무 적응을 위한 기술 공부도 좋지만, 너무 이것에 매달리는건 좋지 않은 것같아 책을 읽으면서 공부해보려고한다. 그래서 읽기 시작한 책은 "클린 아키텍쳐"이다. 사실 클린코드 책도 보고 강의도 사서 매일 보고있는데, 드는 생각이 "좋은 코드만으로 좋은 프로그램을 만들 수 있나?"는 생각이 들었다. 그래서 프로젝트 구조는 어떻게 만들어야할지에 대한 관심이 많아졌고 마침 사내 도서관에 클린아키텍처 책이 있어서 냉큼 집어왔다. 매일 꾸준히 30분 이상 읽고 있는데, 책을 읽으며 생각이 드는 구절이 생기면 쉽게 읽어 나가는게 잘 ..

회고/WIL 2022.08.21

[WIL] 개발자로 취업

드디어 개발자로서, 첫 직장을 갖게 되었다. 개발자가 아니여도 나에게는 첫 직장이다..! 코딩을 공부하기로 마음먹고 기초부터 공부해서 지금까지 약, 1년 정도 걸린 것 같다. 작년 7월말 부터해서 혼자서 위키독스 읽어가며 따라해보고 했던게 엊그제 같은데 신기하다.. 나의 첫 직장은 과분하다 생각이 들정도로 좋은 환경인 것 같다. 가장 원했던 사수가 존재한다는 것!! 그리고 자유로운 분위기 속에서 코딩 관련한 고민을 이야기 할 수 있고, 많은 경험을 가진 사람들의 이야기를 들어볼 수 있다는 것이 너무 행복하다. 8월 1일 부터 첫 출근을 해서 벌써 2주라는 시간이 정신없이 지나갔다. 첫주에는 내가 담당하게 될 서비스의 도메인을 이해하기 위한 공부를 했다. 사실 아직 업무에 접근할 수 있는 계정과 권한이 부..

회고/WIL 2022.08.14

[level 3] Title: 하노이의 탑 파이썬

하노이 탑은 재귀로 풀어야한다고 들어보기만 하였다. 재귀는 아직 연습이 부족한지, 생각만 해도 머리가 지끈거린다... 현재의 내 머리로는 잘 이해가 가지 않아 유튜브 영상을 보고 이해 한 뒤, 코드를 작성했다. 참고한 유튜브 영상, 이해하는데 많은 도움이 됬다. 재귀함수에서는 종료 조건이 필수적이기에, n == 1일 때 answer에 값을 더해줌으로써 재귀를 멈추었다. def solution(n): answer = [] def hanoi(n, start, end, mid): nonlocal answer if n == 1: answer.append([start, end]) else: hanoi(n-1, start, mid, end) answer.append([start, end]) hanoi(n-1, mi..

[level 3] Title: 멀리 뛰기 파이썬

이 문제는 보고나서 문득 DP를 사용해야겠다!와 피보나치 수열하고 똑같은거 아닌가? 하는 생각이 들었다. 그래서 피보나치로 만들어서 풀었는데 풀이가 통과됬다. 1부터 n 까지 숫자를 각 경우의 수라고 생각하면, 결국에는 이전 경우의 수에서 더해져서 만들어지는 것이였다. (코딩문제를 직감으로 풀면 안될 것같은데 직감이 들어간다.. ) def solution(n): if n == 1: return 1 a, b = 1, 2 for i in range(2, n): a, b = b, a + b return b % 1234567 코딩테스트 연습 - 멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸)..

[level 3] Title: 숫자 게임 파이썬

숫자 게임 문제는 정렬과 기준(A)을 통해 문제를 해결 할 수 있었다. 나는 값을 지울 때, pop을 사용하면 더 빠를 줄 알고 아래의 방법으로 했는데, 매번 len(B)을 구하는 것 때문인지 remove 하는 방법보다 조금 느렸다.. # pop() 사용 def solution(A, B): answer = 0 A.sort() B.sort() n = len(A) for i in range(n): for j in range(len(B)): if A[i] < B[j]: B.pop(j) answer += 1 break return answer # remove 사용 def solution(A, B): answer = 0 A.sort() B.sort() for a in A: for b in B: if a < b: ..

[level 3] Title: 가장 긴 팰린드롬 파이썬

나는 이게 팰린드롬인지 확인하는 함수를 만들고, 이를 전체 확인하여, 갯수를 확인해보려고 하였다. # 초기 코드 def check(text): temp = [] mid = len(text) // 2 if len(text) % 2 == 0: for i in range(len(text)): if i = mid: if temp[-1] == text[i]: temp.pop() return True if not temp else False else: for i in range(len(text)): if i mid: if temp[-1] == text[i]: temp.pop() retu..

[level 3] Title: 단어 변환 파이썬

DFS/BFS 유형문제로 나는 BFS를 사용하여 풀어보았다. BFS구현을 위해 deque를 사용하였다. 처음에는 입출력이 이해가 되질 않았다. 왜 "dot"을 거치는지 이해가 되질 않았는데 (사실 아직도 이해되지않는다..) 다른 블로그들을 참고하여, 문제를 풀기위한 방법으로 이해한 것은 한 번에 "한 개의 알파벳만 바꿀 수 있다" = "한개씩만 바꿀 수 있는경우 바꿔야한다." 라고 이해했다. 그리고 이 조건은 check 함수를 만들어서 조건으로 확인하였다. queue에 들어가는 값은 단어와 변환횟수(cnt)를 담았고, 결국 target과 start가 일치 할 때, 현재 cnt에 + 1 을 반환하였다. from collections import deque def check(word, target): cnt..

[level 3] Title: 가장 먼 노드 파이썬

BFS를 활용하여 문제를 풀어보았다. 다른 문제를 풀 때, 거리가 필요하다면 거리정보를 담는 리스트를 따로 만들었을텐데, 이번에는 굳이 만들 필요가 없을 것이라고 생각했고, visited에 갱신된 적이 없을 경우, 1씩 더해가는 방법으로 답을 구했다. from collections import deque def solution(n, edge): graph = [[] for _ in range(n+1)] # 방문 및 거리 갱신 visited = [0] * (n+1) # 그래프 갱신 for a, b in edge: graph[a].append(b) graph[b].append(a) visited[1] = 1 queue = deque([1]) while queue: now = queue.popleft() fo..

[level 3] Title: 순위 파이썬

나는 제한사항의 n과, 경기 결과 수가 많지 않은것을보고 모든 경우를 확인해보기로 하였다. 모든 경우의 수를 확인할 때에는, 중복을 피하기 위해 set을 사용하였고, 데이터 취합에는 dict를 사용하였다. 이번 문제에서 내게 문제였던 부분은, a와 b의 경기에서 a가 이기면 b가 이긴 사람은 모두 a가 이긴다는 것 그리고 a가 진사람은 b도 모두 진다는 것이였다. 생각은 했는데, 이게 코드로 작성이 안되더라.. 공책에 적어가면서 정리하니 풀 수 있었다. from collections import defaultdict def solution(n, results): answer = 0 game_win = defaultdict(set) game_lose = defaultdict(set) for win, los..