-
깃허브 블로그? TOP NEW
저도 배너가 띄우고 싶다고요 . . . 왜 안보여요 . . . 개발 블로그!? 인트로 ssafy에 들어온지도 꽤 오랜 시간이 지났다. 비전공 문과생에서 출발해 아주 조금은 코드를 작성하고 있지만 늘 배운 내용을 TIL 이라는 이름의 혼란한 장소에 저장만 하다보니 필요할 때 찾으면 정말 발견되는 경우가 없었다. 정말 많은 것을 배운 것 같다는 생각을 하지만 열심히 공부했던 기록들이 이대로면 의미없는 정보가 될 것 같기에 공부했던 내용과 앞으로 공부할 내용을 옮겨 적고, 나 뿐만 아니라 다른사람들도 도움이 되면 하는 마음으로 블로그를 해보려고 한다. 그래서 여러 블로그를 고민해봤지만 FE ... Read More
-
[Rust] 백준 25329 - 학생별 통화 요금 계산 TOP NEW
문제 링크 - 백준 : 학생별 통화 요금 계산 해시맵을 이용한 데이터 집계 문제 설명 학생들의 통화 기록이 N개 주어진다. 같은 학생의 통화 시간은 누적된다. 누적된 시간을 기준으로 요금을 계산한다. 기본 100분까지 10원 초과 시 50분당 3원 (올림) 요금이 많은 순서로, 요금이 같다면 이름 사전(오름차)순 출력 접근 데이터를 집계해야 하므로 HashMap을 사용해보았다. Rust에서는 entry 를 사용하면 키가 없을 때 초기화하고 값을 더하는 로직을 편하게 적용할 수 있음. 시간은 HH:MM 형태로 주어지니 미리 분으로 바꿔버리는게 ... Read More
-
이미지 서버 - 실제 서버 v nginx 호스팅 TOP NEW
이미지 서버, 따로 만들어야 할까? 들어가며 서비스에서 이미지 처리는 필수적이지만, “직접 이미지 서비스를 구성” 하는게 맞을까 하는 질문이 생겼다. 과거 직접 termux 환경에서 deno를 활용한 블로그 배포를 진행한 경험에서는 nginx를 활용하여 간단히 이미지를 서빙한 적이 있었다. 당시 환경은 혼자서 약 450기가의 핸드폰을 전부 사용할 수 있으니 간단하고 빠르게 이미지를 제공하는 방법으로 nginx와, 백엔드의 간단한 파일 저장 로직을 사용했다. 당시에는 글을 작성하는 유저는 나 하나 (개인 블로그이므로), 파일 관리에 엄격할 필요가 없거니와, 간단히 termux 환경의 스마트폰에서 이미... Read More
-
[JavaScript] 백준 1092 - 배 TOP NEW
문제 링크 - 백준 : 배 문제 설명 및 접근 항구에 크레인이 N대 있고, 옮겨야 할 박스가 M개 있다. 각 크레인은 무게 제한이 있어서 자신보다 무거운 박스는 옮길 수 없다. 모든 크레인은 동시에 움직이며, 박스를 옮기는 데 1분이 걸린다. 모든 박스를 옮기는 데 걸리는 최소 시간을 구해야 한다. 1. 첫 번째 접근 (시간 초과) 직관적으로 그리디(Greedy) 방식이 떠올랐다. 크레인과 박스를 모두 내림차순으로 정렬한다. 무거운 박스는 힘센 크레인이 처리해야 효율적이다. isMoved라는 방문 체크 배열을 만들어서, 옮긴 박스는 true로 표시하고 넘어간다. 하지만 이 방식은 시간 초... Read More
-
[Rust] 백준 13717 - 포켓몬 GO TOP NEW
문제 링크 - 백준 : 포켓몬 GO 어렵지 않은 구현 문제 문제 설명 2N개의 데이터 세트가 제공된다 포켓몬 이름 진화에 필요한 사탕 / 가지고 있는 사탕 진화 후 사탕을 2개 돌려준다 접근 2번에 적혀있는 대로 나눠버리면 되지 않을까 싶지만. 진화 후 2개를 돌려준다고 하기에, 그리고 N은 1 <= N <= 70 으로 그리 많지 않다. 그냥 하나하나 시뮬레이션 해도 무방하다. 또한 도감 번호가 가장 작은 포켓몬을 출력하며 되는데, 이는 이미 도감번호 순서로 제공해주기에 문제가 없다. 따라서 어떤 경우보다 큰 경우에만 갱신해주... Read More
-
웹 어셈블리가 뭘까 TOP NEW
들어가며 어디선가 간단히 보고 지나간 것 같은 웹 어셈블리. 실제로 web3 지갑 발행 관련 로직이 있었지만 암호화라던지, 이런 저런 연산을 프론트에서 다 하는게 맞나? 싶어서 서버에서 돌려보는건 어떨까 생각했지만… 결국 유저의 지갑 정보는 유저만 가진다 이게 탈 중앙화의 가치라고 생각했기에 어떻게든지 유저의 기기에서 작동시켜야만 했다. 따라서 구현 후 개념에 대해서 자세히 공부해보았다. 웹 어셈블리? WebAssembly (WASM) 은 웹 브라우저에서 네이티브에 가까운 성능으로 코드를 실행할 수 있게 해주는 바이너리 명령어 형식이자, 스택 기반 가상 머신을 위한 표준이다 즉 유일한 웹의 언어였던 J... Read More
-
스택과 큐 TOP NEW
개발자로 성장할 수 있을까 하는 불안감이 가시질 않는다. 하지만 멈춰있으면 정말 끝나는 것! 그렇기에 운동을 다시 시작하듯, 기본 개념부터 잡아가면서 차근차근 올라가는 것이 필요하다고 생각한 시점. 언젠가 정리해야지 정리해야지 하다가 드디어 해본다. 그래서 오늘은 매우 간단한 기본 개념이다. 스택 LIFO - Last In First Out 나중에 들어간 정보가 제일 먼저 나온다. 팬 케이크 쌓아놓고 위에부터 먹는 느낌 항상 한 쪽 끝(Top)에서만 삽입(Push)와 삭제(Pop)이 일어난다. ADT (추상적 자료형) 용어 설명 시간 복잡도 ... Read More
-
[Node.js] 프로그래머스 - 기능개발 TOP NEW
문제 프로그래머스 - 기능개발 문제풀이 O(N)으로 풀어보자. 조건을 보아하니, 하나하나 시뮬레이션 해서 반복하는 것은 비효율적인 것 같다는 생각이 들었다. 따라서 다음과 같은 접근을 해보았다. 선행 배포가 우선되어야 한다. 각 작업은 작업률이 정해져있다. 앞선 작업이 끝나고 나면, 뒤의 완료된 작업도 배포한다. (묶음) 아무래도 3번에서 큐를 쓰라는 것 같았지만 (shift 해서 해당 날짜보다 작으면 하나씩 더하는 느낌으로) 직접 제대로 구현하는게 아닌 이상 shift()가 O(N)이기에 효율적일 것 같지 않다는 판단. 미리 계산해두면 이럴 필요가 없잖아! 미리 계산해버리기 남은... Read More
-
[Node.js] 프로그래머스 - 크레인 인형뽑기 게임 TOP NEW
문제 프로그래머스 - 크레인 인형뽑기 게임 문제 풀이 가장 직관적입 방법은 moves를 순회하면서 board 배열에 깊이 0 부터 인형을 찾는 것. 다만 이런 과정은 $O(N)$의 과정이 인형을 뽑을 때 마다 발생한다는 생각이 들었다. 깊이를 관리하는 것도 귀찮게 느껴지기는 했고. 따라서 해당 탐색 시간을 미리 탐색을 해 둔 상태로 진행하기. 전처리 접근시간을 $O(1)$로 줄이기 위함 의사코드 : 각 줄 별로 별도의 배열을 만들어 쉽게 pop() 하자. 크레인 게임에서 특정 열의 가장 위 인형을 찾는 것은 스택의 pop()과 동일하다. 따라서 board 배열을 열 기준으로 재구성하여 인형을 밑... Read More
-
[Rust] 백준 1002 - 터렛 TOP NEW
문제 링크 기하학! 나는 기하학이 싫어 문제 설명 좌표 평면에 두 터렛이 있고 좌표, 목표물의 거리를 알려준다 (x1, y1, r1, x2, y2, r2) 목표물이 위치할 수 있는 점의 개수를 찾으면 끝 접근 두 원의 교점의 개수를 생각하자. 두 원 중심 사이의 거리와, 두 반지름의 관계를 생각하면 해결된다. (많은 원을 그려서 파악…) 혹시 두 점 사이의 거리를 구하면 제곱은으로 인해 문제가 발생할 수 있으니 f64를 적용하긴 했는데.. (제곱하면 됐음) 경우는 완전 일치 멀리 떨어진 경우 내부에 하나가 그냥 포함된 경우 외부에서 만나는 경우 내부에서 한쪽으로 만나는... Read More
-
[Node.js] 프로그래머스 - 괄호 회전하기 TOP NEW
문제 스택 + 문자열 프로그래머스 - 괄호 회전하기 문제 풀이 O(N^2) 으로 해결해야 할 듯 하다. 접근 회전을 구현해야 한다 괄호가 유효한지 검사 해야한다. 아! 스택으로 접근하면 되겠군! 의사코드와 설계 Solution : 메인 루프 길이가 홀수인지 확인한다. (홀수 괄호는 짝을 이룰 수 없으니 불가능) 0부터, 주어진 문자열 길이까지 반복 회전 -> s.substring(x)과 s.substring(0,x)를 통해 문자열을 회전시키자 checkCorrect : 검사 스택과 괄호 짝 판단을 위한 매핑 PAIR를 추가 문자열을 순회하며 열린 괄호는 스택에 넣고, 닫힌... Read More
