전체 글

전체 글

    [백준] 1339번: 단어 수학 (JavaScript, NodeJS)

    문제 민식이는 수학학원에서 단어 수학 문제를 푸는 숙제를 받았다. 단어 수학 문제는 N개의 단어로 이루어져 있으며, 각 단어는 알파벳 대문자로만 이루어져 있다. 이때, 각 알파벳 대문자를 0부터 9까지의 숫자 중 하나로 바꿔서 N개의 수를 합하는 문제이다. 같은 알파벳은 같은 숫자로 바꿔야 하며, 두 개 이상의 알파벳이 같은 숫자로 바뀌어지면 안 된다. 예를 들어, GCF + ACDEB를 계산한다고 할 때, A = 9, B = 4, C = 8, D = 6, E = 5, F = 3, G = 7로 결정한다면, 두 수의 합은 99437이 되어서 최대가 될 것이다. N개의 단어가 주어졌을 때, 그 수의 합을 최대로 만드는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. ..

    [백준] 10610번: 30 (JavaScript, NodeJS)

    문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 예제 입력 1 복사 30 예제 출력 1 복사 30 예제 입력 2 복사 102 예제 출력 2 복사 210 예제 입력 3 복사 2931 예제 출력 3 복사 -1 예제 입력 4 복사 80875542 예제 출력 4 복사 88755420 ..

    [백준] 2217번: 로프 (JavaScript, NodeJS)

    문제 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다. 입력 첫째 줄에 정수 N이 주어진다. 다음 N개의 줄에는 각 로프가 버틸 수..

    [백준] 1026번: 보물 (JavaScript, NodeJS)

    문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0] × B[0] + ... + A[N-1] × B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다. 출력 첫째 줄에 S의 최솟값을 출력한다. 예제..

    [우아한테크코스 4기] 최종 결과 발표

    기다림 12월 18일 날 최종 코딩 테스트를 보고 30일 날까지 기다려야 해서 아무것도 손에 잡히지 않았다. 내년 계획과 올해 회고를 써야 했었는데, 우테코의 합불이 결정이 되어야 뭐든 계획을 세울 수 있어서 결과만 기다렸던 것 같다. 그 사이에 합격했을 때, 탈락 했을 때를 따로따로 계획을 세울 수는 있었지만, 굳이 그렇게 하고 싶지 않았다. 결과 그렇게 30일이 왔고 결과는 불합격이었다. 아쉽지 않았다면 정말 거짓말이고, 많이 아쉬웠다. 우테코에서 많은 것을 배우고픈 마음이 너무나도 컸지만 우테코의 인재상에서 나는 조금 아쉬웠던 것 같다. 어느 부분이 아쉬웠는지 알고 싶어서 다시 이메일로 피드백을 부탁드렸지만, 개인 피드백은 제공하지 않는다고 다시 답변이 왔다. 1차 합격부터 3주간의 프리코스 기간 ..

    [우아한테크코스 4기] 프리코스 3주차: 자판기 회고

    📌 프리코스 마지막 세 번째 과제 (데모 찍다가 오류 두 개 발견해서 바로 수정했음) 드디어 대망의 마지막 마지막 주차 과제가 나왔고 구현을 완료했다. 역시나 수요일 3시 정각에 메일이 왔다. 3주 차 과제는 자판기를 만드는 것이었다. 과제의 양만 봐도 1, 2주 차와는 확실히 수준이 많이 달라 보였다. 수요일에는 인턴 일을 해야 돼서 요구 사항 정리만 했다. 목요일과 금요일도 인턴 일이 있어서 밤에 6시간 정도 진행을 했다. 토요일에는 하루 종일 했고 일요일에도 하루 종일 했다. 현재 이 글을 쓰는 시점에도 리팩토링 할 것이 많지만, 우선은 기능 구현을 완료했고 최소한의 요구사항들은 만족시켜서 회고글을 먼저 쓰고 이번 주 토요일 날 있을 최종 코딩 테스트를 계속 준비를 해야 할 것 같다. 최종 코딩 테..

    [우아한테크코스 4기] 프리코스 2주차: 자동차 경주 게임 회고

    자동차 경주 게임 정확히 수요일 오후 3시에 2주 차 과제가 날아왔다. 저번 기수와 똑같이 자동차 경주 게임 과제였다. 과제 링크 사실 메일이 날라 오기 전에 이미 한번 구현을 해본 상태였다. 그래서 대충 어떻게 하면 되겠다 라는 생각이 있었는데 다시 진행을 하고 리팩토링을 하다 보니 점점 생각이 깊게 빠졌다. 어떻게 하면 깔끔하게 코드를 짤 수 있을까? 하는 생각이 떠나질 않았다. 그렇게 바꾸고 바꾸고 바꾸다 보니 64개의 commit을 하게 되었다. (사실 평균적인 것 같기도...) 2주 차를 진행하면서 느낀 점들을 적어본다. 어려웠던 것들 1. 클래스 분리는 어떻게 해야 돼? 저번 1주 차 때 하면서 느꼈던 것들을 바탕으로 최대한 반성한 것들을 반영하려고 노력했다. 우선 기능 구현을 최우선적으로 하..

    [우아한테크코스 4기] 최종 코딩테스트 준비

    해당 글은 내가 프리코스를 진행하면서 신속하게 최종 코딩테스트를 진행하기 위해서 정리 해놓은 글 📌 코드 컨벤션 & 커밋 컨벤션 커밋 컨벤션 feat (기능개발) fix (버그 수정) docs (문서 작업) style (코드 포맷팅, 세미콜론(;)을 빠트림, …) refactor (기능은 바뀌지 않지만 코드가 바뀔 때) test (테스트 코드 작성 시) chore (주석 또는 환경설정, 상수 파일 생성, 유지보수) 코드 컨벤션 (공식) 코드 컨벤션을 잘 지켰는가? 순수 바닐라 자바스크립트를 사용했는가? 모든 함수는 15줄 아래로 작성했는가? 모든 함수는 한 가지 일만 하는가? let, const만 사용했는가? import, export를 이용해 모듈화를 진행했는가? 코드의 깊이는 3을 넘지 않았는가? (..

    [우아한테크코스 4기] 프리코스 1주차: 숫자 야구 게임 회고

    프리코스 1주 차를 끝내고 적는 회고록. 저번 주 수요일 그러니까 11월 26일 오후 3시에 우테코한테서 메일이 날아왔다. 1주 차 프리코스는 작년과 똑같은 (아마 재작년과도 똑같은 것일 거다.) 숫자 야구 게임이었다. https://github.com/woowacourse/javascript-baseball-precourse GitHub - woowacourse/javascript-baseball-precourse: 숫자 야구게임 미션을 진행하는 저장소 숫자 야구게임 미션을 진행하는 저장소. Contribute to woowacourse/javascript-baseball-precourse development by creating an account on GitHub. github.com 해당 레파지..

    [우아한테크코스 4기] 1차 합격 및 프리코스 사전 준비

    합격 (1차) 11월 6일 토요일에 우테코 코딩 테스트를 보고 나서 정말 많이 기다렸던 1차 발표날.. 사실 코딩테스트를 끝나고 복기를 하는데 꽤나 놓친 것들이 몇 개가 있었고 마지막 문제는 풀지도 못했다.. (어렵진 않았는데 아이디어가 2시간동안 생각해도 생각나지 않았다.) 원래 내가 파트타임으로 하얀마인드 업무를 보고 있었는데 사실 업무가 잘 들어오지 않았다. 그리고 친구랑 같이 이메일을 까봤는데 정말 정말 정말 다행히도 합격을 주셨다. 아직 최종 합격이 아니라서 기뻐하긴 이르지만 그래도 정말 한 고비, 아니 정말 큰 고비를 넘긴 느낌이고 너무 기뻐서 카페에 있었는데 자리에서 벌떡 일어나버렸다ㅋㅋㅋㅋㅋㅋㅋ 기쁨은 잠시 뒤로두고 바로 프리코스를 준비를 했어야 했다. 1차 합격 발표가 19일 금요일이고,..

    [프로그래머스 LV2] 가장 큰 수 (JavaScript)

    문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 numbers return [6, 10, ..

    [프로그래머스 LV2] 위장 (JavaScript)

    문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. cloth..