전체 글 123

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

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

[JavaScript] 비교적 정확한 타이머 만들기

자바스크립트로 정확한 타이머를 만드는 것은 어렵습니다. 어려운 이유는 무엇인지, 그리고 어떻게 비교적 정확한 타이머를 만들 수 있는지 알아보겠습니다. 🤔 1. setInterval()과 setTimeout()이 정확하지 못한 이유 JavaScript에서 타이머 기능을 구현할 때 자주 사용하는 `setInterval()`과 `setTimeout()` 함수는 브라우저 환경에서 일정 시간 간격으로 코드를 실행할 수 있게 해 줍니다.`setTimeout()` 함수를 이용해 1초 간격으로 실행되는 타이머를 만들어 보겠습니다. const INTERVAL = 1000; // 1초 간격let startTime = Date.now();function timerFunction() { const currentTime..

WEB/💡 Javascript 2024.08.15

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

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

2024년 상반기 회고

2024년 상반기 회고입니다. Keep 스터디  1월부터 시작한 PS/CS 스터디를 꾸준히 진행했다. 매주 2회 모여서 코딩 테스트 문제를 풀이하고, CS 내용을 학습해서 발표하고 피드백을 주고받았다.CS는 『컴퓨터 네트워킹 하향식 접근』을 기반으로 공부한 네트워크와 『알고리즘 10판(공룡책)』으로 학습한 운영체제, 그리고 알고리즘을 학습해서 발표했다. 모두 전공필수로 배운 내용들이지만, 다시 정리하고 설명해 보면서 내가 자세히 알지 못했던 개념을 더 확실히 파악할 수 있는 기회가 되었다. 현재는 『모던 자바스크립트 Deep Dive』를 위주로 JS를 공부해보고 있다.PS는 백준 골드 문제 위주로 풀어나가고 있다. 스터디를 시작했을 때에는 DFS/BFS도 어색한 수준이었지만, 꾸준히 여러 문제를 풀어본 ..

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

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

[CSS] 해와 달이 뜨고 지는 다크모드 버튼 만들기

다크모드가 대중화 되면서 여러 모양의 다크모드 버튼을 만나볼 수 있습니다.이미 여러 디자인이 공개되어 있지만, 저는 조금 더 독특한 버튼을 만들어보고 싶었습니다. 이번 게시글에서는 위 이미지처럼 해와 달이 떠오르고 지는 애니메이션이 포함된 다크모드 버튼을 만드는 방법을 소개하겠습니다. 1. 다크모드 토글 버튼 만들기 🌜document.addEventListener("DOMContentLoaded", function () { const savedTheme = localStorage.getItem("color-theme") || "light"; document.documentElement.setAttribute("color-theme", savedTheme);});const toggleButton = ..

WEB/📘 HTML, CSS 2024.06.18

[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가지 경..