학습 정리 81

글또 10기를 지원하면서 - 삶의 지도 🗺️

글또 10기에 지원 하며 작성하는 글입니다. 신규로 참여하는 경우 “자신이 어떻게 살아왔는지 - 삶의 지도”에 대한 글을 작성하라는 항목이 있어 부족하지만 간단히 제 삶을 돌아보는 글을 작성합니다. 🔭 천문학과에서 우연히 시작한 개발 꽤 오랜 시간 저의 꿈은 천문학자였습니다. 초·중·고 생활기록부 장래 희망 칸에는 한 번도 변함없이 ‘천문학자’라는 직업이 적혀있었어요. 천문학자가 되겠다는 목표를 가지고 학창 시절 공부를 해왔고, 자연스럽게 저는 천문학과에 입학해서 대학 생활을 시작했습니다. 천문학과 코딩은 얼핏 어울리지 않는 조합처럼 보이지만, 생각보다 밀접한 관련이 있습니다. 흔히 천문학자라고 하면 망원경으로 무언가를 관찰하는 모습을 떠올리기 쉽지만, 실제로는 방대한(말 그대로 '천문학적인') 데이터..

<개발자를 위한 글쓰기 가이드> - 유영경

📖 책 소개 ‘글 잘 쓰는 개발자’가 되고 싶어 여러 글쓰기 책을 읽어보던 중 발견한 책이다. Microsoft, NAVER, NHN에서 테크니컬 라이터로 일하는 유영경 저자가 작성한 이 책은 개발자를 위한 글쓰기 노하우를 담은 책이다. 책의 순서를 살펴보면, 가장 먼저 1부에서 ‘테크니컬 라이팅(기술 글쓰기)’가 무엇인지 소개한다. 책의 핵심인 2부에서는 테크니컬 라이팅의 45가지 원칙을 설명한다. 45가지 원칙에는 문서 작성 계획부터 초안 작성법, 시각화 요소 활용과 퇴고 방법까지 모두 다룬다. 마지막 3부에서는 메일, 회의록, 오류 메시지와 사용자 가이드 등 유형별 테크니컬 라이팅을 살펴보며 작성 노하우를 알려준다. 개발자가 현업에서 자주 사용하는 문장으로 설명하는 것이 이 책의 최고 장점이다. ..

<소프트 스킬> - 존 손메즈

📖 책 소개 평범한 개발자의 비범한 “인생 전략” 74가지 라는 부제목 처럼, ‘개발자를 위한 자기개발서’라는 설명이 잘 어울리는 책이다. 요즘들어 개발자에게 특히 강조되는 능력이 ‘소프트 스킬’이다. 소프트 스킬은 프로그래밍 실력같은 ‘하드 스킬’과 달리, 의사소통 능력 같이 협력에 필요한 비기술적인 능력을 말한다. 이런 소프트 스킬을 기르기 위한 방법들이 책에 소개되어 있다. 책은 총 7부로 구성되어 있다. 초반부는 “경력”, “학습”, “생산성” 같은 개발자에게 필요한 전략이 소개되어 있고, 후반부에는 “재무관리”, “건강” 같이 개발자에게 특화된 내용이 아닌 일반적인 자기개발서에서 찾아볼 수 있는 전략을 담았다. 책을 처음 읽을 때는 저자가 일하는 미국과 한국의 차이를 고려해가면서 읽었는데, 생..

[Python] 줄 세우기 (백준 7570번)

🤔 문제 https://www.acmicpc.net/problem/7570  🔍 문제 풀이 과정N=100만이고, N log N ~ 2000만이므로 O(NlogN) 시간 내에 풀어야 하는 문제입니다. 처음 봤을 때 떠오른 방식은 최장 증가 부분수열(LIS) 이었습니다. (처음 풀이 코드 - 실패)import sysinput = sys.stdin.readlinen = int(input())data = list(map(int, input().split()))# target 보다 작은 값 중 가장 큰 값의 index 반환def binary_search(array, target): start, end = 0, len(array) - 1 result = -1 while start = len(dp..

[Python] 피보나치 함수 (백준 1003번)

🤔 문제 https://www.acmicpc.net/problem/1003  🔍 문제 풀이 과정 전형적인 dp 문제입니다. dp[n]에 fibonacci(n)을 호출했을 때, 0과 1이 각각 몇 번 출력되는지 저장하도록 해보겠습니다.배열의 첫 원소는 0이 출력되는 횟수, 두 번째 원소는 1이 출력되는 횟수를 저장하는 식으로 구현하겠습니다. 먼저 손으로 dp[0]부터 값을 채워보면서 규칙을 찾아보겠습니다. dp[0]과 dp[1]은 예시에서도 나와있듯이 [1,0]과 [0,1]입니다.dp[2]는 dp[0]과 dp[1]을 호출하므로 두 값을 합한 값인 [1,1]이 되고,마찬가지로 dp[3]도 dp[1]과 dp[2]를 합한 값이 됩니다. dp[i][0] = dp[i - 1][0] + dp[i - 2][0]dp..

[Python] 색상환 (백준 2482번)

📜 문제 https://www.acmicpc.net/problem/2482 🔍 문제 풀이 과정 일단 규칙성을 찾아보기 위해 n=4부터 7, k=1부터 4까지의 값을 손으로 계산해 보았습니다.  풀면서 찾게 된 점화식은 다음과 같습니다.dp[n][k] = dp[n-2][k-1] + dp[n-1][k]예를 들어, 각 색상을 1번부터 n번까지의 번호라고 가정하고 1번과 n번이 연결되었다고 해보겠습니다.n=7, k=3 인 상황에서 가능한 경우는 다음과 같습니다.1 3 61 4 62 4 72 5 73 5 71 3 52 4 6위의 경우를 잘 살펴보면 n=5, k=2일 때 가능한 값에6과 7이 추가된 경우의 수가 있고1 3 + 61 4 + 62 4 + 72 5 + 73 5 + 7n=6, n=3일..

[Python] 타일 채우기 (백준 2133번)

🤔 문제 https://www.acmicpc.net/problem/11726  🔍 문제 풀이 과정  예전에 풀었던 2xn 타일링 문제와 비슷해서 바로 dp 문제라는 것을 떠올릴 수 있었습니다. dp 테이블은 dp[n]이 3*n 크기의 벽을 채울 수 있는 경우의 수로 가정하고 만들었습니다. 규칙을 찾기 위해서 위의 그림처럼 하나씩 경우의 수를 그려가며 풀어보았습니다. 그 결과n=홀수 인 벽은 채울 수 없다.n=2인 경우에는 3가지 경우가 가능n=4인 경우부터는 기존의 조합을 사용하지 않는 2개의 새로운 경우와, 기존의 조합을 활용한 경우의 수가 존재한다.라는 규칙을 찾았습니다. 조금 더 구체적으로 설명하면, n=4 이상일 때 가능한 경우의 수는 다음과 같습니다.기존 경우의 수로 채우지 못하는 2가지 경..

<함께 자라기 : 애자일로 가는 길> - 김창준

작년 여름에 처음 읽었던 책이다. 겨울에 프로젝트를 하면서도 종종 읽어보았고, 오늘에서야 독서 기록을 남겨본다. 애자일 방법론을 소개해온 김창준 대표가 쓴 이 책은 “자라기” / “함께” / “애자일” 총 3부로 구성되어 있다. 우리는 (거의) 평생 세수와 양치질을 꾸준하게 반복했건만 왜 세수와 양치의 달인이 안 될까요? 예컨대 10년이 지나도 여전히 양치질을 제대로 못 해서 치과에 갈까요. 가서는 의사에게 "이쪽 치아는 하나도 안 닦으시나 봐요" 같은 소리를 듣고요.53p “자라기” 에서는 1만 시간의 법칙을 이야기하면서 그냥 수련이 아닌 ‘의도적 수련(Deliberate Practice)’이 필요하다고 말한다. 예컨대, 우리는 평생 양치질을 해왔지만 양치질의 달인이 되지는 못한다. 이러한 수련이 아닌..

<나는 네이버 프런트엔드 개발자입니다> - 김지한, 하성욱, 장기효, 윤정현, 손찬욱, 김다현, 박재성, 윤영제

처음에는 프런트엔드 개발자로 취업하기 위해 갖출 점을 찾기 위해 읽기 시작했지만, 취업 이야기만큼이나 선배 개발자들의 성장 이야기도 인상적이었던 책이었다. 책은 총 8명의 네이버 프런트엔드 개발자가 말하는 이야기로 만들어졌다. 딱딱한 개발 이야기만 있는 것이 아니라 프런트엔드 초창기 개발 이야기, 다양한 일과 업무를 거쳐 프런트엔드 개발자가 되기까지의 이야기 등 가볍게 읽을 수 있는 내용도 많아 읽는 데 부담은 없었다. 개발자님들의 각 이야기는 다음과 같이 구성되어 있다. 프런트엔드 개발자가 되려면 무엇을 공부해야 하나요? (김지한)미국의 신입 개발자 한국으로 돌아오다 (하성욱)프런트엔드 개발 상담, 무엇이든 물어보세요 (장기효)오류와 실수, 신기술 도입, 성능 지표 이야기 (윤정현)꿈을 현실로, 프런트..

[C++] 프로그래머스 - 크기가 작은 부분 문자열

https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [소스 코드] // 23.06.23 #include #include using namespace std; int solution(string t, string p) { int answer = 0; for(int i=0;i