전체 글

전체 글

    [백준] 21314번: 민겸 수 (JavaScript, NodeJS)

    문제 민겸이는 로마 숫자를 보고 굉장히 흥미롭다고 생각했다. 그래서 민겸이는 새로운 수 체계인 민겸 수를 창조했다. 민겸 숫자는 0 이상의 정수 N에 대해 10N 또는 5 × 10N 꼴의 십진수를 대문자 M과 K로 이루어진 문자열로 표기한다. 10N 꼴의 십진수는 N + 1개의 M으로, 5 × 10N 꼴의 십진수는 N개의 M 뒤에 1개의 K를 이어붙인 문자열로 나타낸다. 즉, 아래 표처럼 나타낼 수 있다. 변환 전 변환 후 1 M 5 K 10 MM 50 MK 100 MMM 500 MMK 1000 MMMM 5000 MMMK ... ... 민겸 수는 한 개 이상의 민겸 숫자를 이어붙여 만든다. 예를 들어, 민겸 수 MKKMMK는 MK, K, MMK의 세 민겸 숫자를 이어붙여 만들 수 있다. 민겸 수를 십진수..

    [백준] 19598번: 최소 회의실 개수 (JavaScript, NodeJS)

    문제 서준이는 아빠로부터 N개의 회의를 모두 진행할 수 있는 최소 회의실 개수를 구하라는 미션을 받았다. 각 회의는 시작 시간과 끝나는 시간이 주어지고 한 회의실에서 동시에 두 개 이상의 회의가 진행될 수 없다. 단, 회의는 한번 시작되면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작 시간은 끝나는 시간보다 항상 작다. N이 너무 커서 괴로워 하는 우리 서준이를 도와주자. 입력 첫째 줄에 배열의 크기 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주어진다. 시작 시간과 끝나는 시간은 231−1보다 작거나 같은 자연수 또는 0이다. 출력 첫째 줄에 최소 회의실 개수를 출력한다...

    [백준] 16953번: A → B (A to B) (JavaScript, NodeJS)

    문제 정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다. 2를 곱한다. 1을 수의 가장 오른쪽에 추가한다. A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자. 입력 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. 출력 A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다. 예제 입력 1 복사 2 162 예제 출력 1 복사 5 2 → 4 → 8 → 81 → 162 예제 입력 2 복사 4 42 예제 출력 2 복사 -1 예제 입력 3 복사 100 40021 예제 출력 3 복사 5 100 → 200 → 2001 → 4002 → 40021 정답 풀이 const path = process.platform === "linu..

    계획했던 것을 딴짓을 하느라 시간을 낭비하나요? (초집중을 읽고)

    책을 읽고 집중력을 지배하고 원하는 인생을 살자. 초집중이라는 책이 궁금해서 들어왔다. 그 때 휴대전화의 알림이 울린다. 휴대전화를 확인하고 별거아닌 이벤트성 알림이라는 것을 안다. 그리고 다시 블로그 글을 읽는다. 그러다가 메일이 왔다는 알림을 받는다. 메일이 왔다는 사실에 또 궁금해져서 메일을 확인하고 다시 글을 읽는다. 그러다가 문득 인스타그램 피드가 보고싶어서 인스타그램 피드를 또 생각없이 본다. 위의 글을 읽으니 어떤가? 대부분의 사람들이 살아가는 방식일 것 같다. 나 또한 그랬다. 우리는 하루에도 몇 번씩 여러 외부요인들로부터 우리의 집중을 지배당한다. 휴대폰, 이메일, SNS, 또는 오늘 나를 괴롭혔던 꿈에 대한 생각 아니면 어제 내가 했던 수치스러웠던 장면들에 대한 생각으로 지배당할 수 있..

    [백준] 13164번: 행복 유치원 (JavaScript, NodeJS)

    문제 행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에 속한 원생들은 서로 인접해 있어야 한다. 조별로 인원수가 같을 필요는 없다. 이렇게 나뉘어진 조들은 각자 단체 티셔츠를 맞추려고 한다. 조마다 티셔츠를 맞추는 비용은 조에서 가장 키가 큰 원생과 가장 키가 작은 원생의 키 차이만큼 든다. 최대한 비용을 아끼고 싶어 하는 태양이는 K개의 조에 대해 티셔츠 만드는 비용의 합을 최소로 하고 싶어한다. 태양이를 도와 최소의 비용을 구하자. 입력 입력의 첫 줄에는 유치원에 있는 원생의 수를 나타내는 자연수 N(1 ≤ N ≤ 300,000)과 나누려고 하는 조의 개수를 나타내는 자연수 K..

    [백준] Node.js으로 골드 달성

    총 120문제를 풀고, 골드5를 찍었다. 골드 찍는게 어렵거나 엄청 대단하고 그런건 아닌데, 알고리즘에 정말 관심이 없던 내가 알고리즘에 대해서 무언갈 이뤘다는 거에 자부심을 느껴야곘다. 그냥 생각없이 푼 문제들도 있고, 내가 제대로 풀지 못한 문제들도 많아서 껍데기만 골드5인 것 같다. 알맹이도 골드를 달성할 수 있도록 계속해서 열심히 문제풀고, 모르는 부분들에 대해서도 많이 알아봐야겠다. 다음 티어 포스팅은 플레티넘이 될 것인가?

    [백준] 20365번: 블로그2 (JavaScript, NodeJS)

    문제 neighbor 블로그를 운영하는 일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올린다. 그리고 매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한다. 일우는 각 문제를 칠할 때 아래와 같은 과정을 한 번의 작업으로 수행한다. 연속된 임의의 문제들을 선택한다. 선택된 문제들을 전부 원하는 같은 색으로 칠한다. 예를 들어, 각 문제를 위와 같은 색으로 칠하려고 할 때, 1~2번 문제를 파란색, 3번을 빨간색, 4번을 파란색, 5번을 빨간색, 6~7번을 파란색, 8번을 빨간색으로 칠하는 작업을 순서대로 수행하면 6번의 작업을 거쳐야 한다. 하지만, 1~7번 문제를 파란색, 3번을 빨간색, 5번을 빨간색, 8번을 빨간색으로 순서대로 칠한다면 작업 횟수는 4번..

    [개발지식] 브라우저 저장소, 각각에 대해서 자세히 알고 계신가요?

    브라우저 저장소 로컬, 세션, 쿠키가 있는 건 알고 있는데.. 각각 무엇을 하고 장점과 단점은 뭐였죠? 브라우저 저장소 (크롬 기준) 우리가 브라우저에서 개발자 도구 탭을 열면 애플리케이션 탭에서 브라우저 저장소에 대한 정보를 볼 수 있습니다. 로컬 스토리지, 세션 스토리지, IndexedDB, 웹 SQL, 쿠키, 신뢰 토큰(크롬 한정) 이렇게 나누어져 있어요. 오늘은 이것들에(신뢰 토큰 제외) 대해서 자세히 알아볼 예정입니다. 쿠키 "쿠키"라는 용어는 웹 브라우저 프로그래머 루 몬툴리가 만들어냈다고 합니다. 이는 유닉스 프로그래머들이 사용한, "프로그램이 수신 후 변경하지 않은 채로 반환하는 데이터의 패킷"을 의미하는 매직 쿠키라는 용어에서 비롯된 것이라고 합니다. HTTP 쿠키(웹 쿠키, 브라우저 쿠..

    [백준] 20300번: 서강근육맨 (JavaScript, NodeJS)

    문제 로니 콜먼 동영상을 보고 보디빌더가 되기로 결심한 향빈이는 PT 상담을 받으러 서강헬스클럽에 갔다. 향빈이가 서강헬스클럽을 선택한 이유는 PT를 받을 때 사용하는 운동기구를 회원이 선택할 수 있다는 점 때문이다. 하지만, 서강헬스클럽은 항상 사람이 많아서 PT를 한 번 받을 때 운동기구를 최대 두 개까지만 선택할 수 있다. 헬스장에 있는 N$N$개의 운동기구를 한 번씩 사용해보고 싶은 향빈이는 PT를 받을 때마다 이전에 사용하지 않았던 운동기구를 선택하기로 계획을 세웠다. 그리고 비용을 절약하기 위해 PT를 받을 때 운동기구를 되도록이면 두 개를 사용하기로 했다. 예를 들어, 헬스장에 총 10$10$개의 운동기구가 있을 경우 PT를 5$5$번 받으면 모든 기구를 다 사용할 수 있다. 9$9$개의 운..

    [백준] 20115번: 에너지 드링크 (JavaScript, NodeJS)

    문제 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한밤중에 퇴근하니 벌써 새벽 1시. 하지만 주말은 아직 멀었고, 다음 날에도 정시에 출근해야 하는 페인은 오늘도 에너지 드링크를 찾는다. 반복되는 야근에 지친 나머지, 평소보다 더 많은 에너지와 피로 회복이 필요했던 페인은 집에 있던 에너지 드링크들을 한 데 합쳐서, 하나의 에너지 드링크로 만들어 한번에 마시려 한다. 페인이 에너지 드링크들을 합치는 과정은 다음과 같다. 임의의 서로 다른 두 에너지 드링크를 고른다. 한쪽 에너지 드링크를 다른 쪽 에너지 드링크에 모두 붓는다. 단, 페인은 야근 후유증으로 인해 손이 떨..

    [백준] 11508번: 2+1 세일 (JavaScript, NodeJS)

    문제 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 개의 제품 가격만 지불하면 됩니다. 한 번에 3개의 유제품을 사지 않는다면 할인 없이 정가를 지불해야 합니다. 예를 들어, 7개의 유제품이 있어서 각 제품의 가격이 10, 9, 4, 2, 6, 4, 3이고 재현이가 (10, 3, 2), (4, 6, 4), (9)로 총 3번에 걸쳐서 물건을 산다면 첫 번째 꾸러미에서는 13원을, 두 번째 꾸러미에서는 10원을, 세 번째 꾸러미에서는 9원을 지불해야 합니다. 재현이는 KSG 편의점에서 친구들과 같이 먹을 총 N팩의 유제품을 구입하려고 합니다. 재현이를 도와..

    [백준] 1758번: 알바생 강호 (JavaScript, NodeJS)

    문제 스타박스는 손님을 입장시킬 때 독특한 방법으로 입장시킨다. 스타박스에서는 손님을 8시가 될 때 까지, 문앞에 줄 세워 놓는다. 그리고 8시가 되는 순간 손님들은 모두 입구에서 커피를 하나씩 받고, 자리로 간다. 강호는 입구에서 커피를 하나씩 주는 역할을 한다. 손님들은 입구에 들어갈 때, 강호에게 팁을 준다. 손님들은 자기가 커피를 몇 번째 받는지에 따라 팁을 다른 액수로 강호에게 준다. 각 손님은 강호에게 원래 주려고 생각했던 돈 - (받은 등수 - 1) 만큼의 팁을 강호에게 준다. 만약, 위의 식으로 나온 값이 음수라면, 강호는 팁을 받을 수 없다. 예를 들어, 민호는 팁을 3원 주려고 했고, 재필이는 팁을 2원, 주현이가 팁을 1원 주려고 한 경우를 생각해보자. 민호, 재필, 주현이 순서대로 ..