분류 전체보기 107

BOJ - 11399 ATM

문제 링크 : https://www.acmicpc.net/problem/11399문제 티어 : 실버 4문제 유형 : 그리디 알고리즘 문제 풀이 1) N을 입력 받고 그 아래 N 만큼 숫자를 입력 받는다. 2) Pi가 주어지고 Pi가 작은 순대로 index를 정렬 해준다.  즉, 오름차순 정렬 해줌3) 그 후 이전에 것들과 함께 더 해줌  문제 코드 const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let n = Number(input[0]);// Pi 입력 받음let arr = input[1].split(" ").map(Number); // arr 오름차순 정렬 arr.sort((a,b)=>a-..

BOJ - 11047 동전 0

문제 링크 : https://www.acmicpc.net/problem/11047문제 티어 : 실버 4문제 유형 : 그리디 알고리즘문제 방법 1) N, K 를 입력 받는다. 2) 이미 오름차순으로 주어지고 있다. 그러나 우리는 동전 갯수를 최소로 써야 하기 때문에 역순으로 먼저 써야 한다.3) 만약 동전의 가치가 K보다 크면 그냥 skip 하고 K보다 작으면 몫만큼 동전의 갯수로 더해준다. ( 4200 / 1000 = 4개의 동전) 4) 3) 과정에서 나온 나머지를 다시 3) 과정 반복 5) 만약 위 과정을 반복한 나머지가 0이 되면 종료 후 동전의 갯수 출력 문제 코드 const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString..

[코딩테스트] 그리디 알고리즘

1. 그리디 알고리즘이란?  : 탐욕법이라고도 함 : 현재 상황에서 당장 가장 좋아 보이는 상황만을 선택하는 알고리즘 : 최적의 해를 구하기 위한 근사적인 방법 but 이러한 근사적인 방법은 최적의 해를 놓칠 수도 있다. => 코테에서는 탐욕 방법으로 최적의 해가 보장되는 문제가 출제되므로 걱정할 필요는 없다고 한다.  2. 그리디 알고리즘 접근 방법 1) 방법 고안하기 2) 정당성 확인하기  3. 그리디 알고리즘 접근 방법 예시 ex) 거스름돈 문제 :손님에게 500 , 100, 50, 10원으로 주어진 값에 대해 거스름돈을 주어야 할 때 동전 갯수를 최솟값으로 하는 법 1) 그 후 500원으로 최대한 거슬러줌 2) 그 후 100원으로 최대한 거슬러줌 3) 그 후 50원으로 최대한 거슬러줌 4) 그 후..

Front-end 배포 (3) - 개발용과 실제 서비스용 배포 분리하기

회사에서 만든 웹 서비스를 Github Actions와 S3 + Cloudfront 로 배포를 했는데 이 때 새로 오신 사수 개발자분께서 개발용 서버와 실제 서버를 분리해주셨고 그에 맞춰 배포도 다르게 가야 한다고 말씀해주셔서 배포 했던 것을 간단히 수정하고자 했다.  1. 기존 구조gitflow를 사용하고 있었기 때문에 dev를 default로 잡고 이 곳에 push 해주었다. 그리고 main에 PR을 올릴 때 CD actions가 수행되어 배포가 되게 하였다.1) branch 구조feature/#123 -> dev (default branch) -> main 2) CD Scriptname: CDon: push: branches: - main pull request: branch..

FrontEnd Skils 2024.07.01

소프티어 - LV1 연탄 배달의 시작

문제 링크 https://softeer.ai/practice/7626 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai난이도 : 별 1개  문제 풀이 1) 이미 오름차순으로 받는다고 가정했으므로 minDistance를 최대한 크게 잡고 첫 번째부터 계속 distance를 빼가며 minDistance를 줄여간다. 2) 그 후 distance가 minDistance면 count ++ 해준다. 문제 코드const readline = require("readline");const rl = readline.createInterface({ input: process.stdin, output: process.stdout,});let input = [];rl.on("line", (line..

[코딩테스트] node.js 입출력 작성 방법

이번에 코딩테스트를 본격적으로 준비하면서 JS로 언어를 바꿨는데 문제 푸는 사이트마다 node.js는 특히 입출력 시 생소하게 작성해야 해서 코딩테스트 시작하기 전에 정리하면 편할 것 같아서 정리해보고자 한다.fs와 readline을 사용하는 경우가 있다. 허나 fs가 더 빠르다해서 백준에서도 권장하는 방식이다. 1. 한 개의 입력 값을 받을 때 1) fsconst fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let N = Number(input[0]); 2) readline const readline = require("readline");const rl = readline.createInterfa..

BOJ - 1427 소트인사이드

문제 : https://www.acmicpc.net/problem/1427문제 등급 : 실버5문제 풀이 : 총 두 가지 문제 풀이가 있다.1)  문자열로 만들어서 하나씩 쪼갠 후 내림차순 정렬 후 다시 합쳐주는 방식이 있다.  ex) 92413  -> 9 , 2 ,4 , 1 , 3 을 sort()로 내림차순으로 만들어준 뒤 다시 합쳐주는 것2) 10개의 숫자 digit이 존재하고 0~9까지 모든 숫자에 대하여 빈도수를 센다 ex) 999243 => 9 => 3번 , 2 => 1번 , 4 => 1번 , 3 => 1번   그 후 각 숫자를 내림차순으로 하나씩 확인 후 , 빈도 수만큼 출력해준다.  문제 코드 1) 번 풀이const fs = require("fs");let input = fs.readFileS..

BOJ - 10814 나이순 정렬

문제 : https://www.acmicpc.net/problem/10814문제 등급: 실버5문제 유형: 정렬문제 풀이: 좌표 정렬과 비슷하게 나이로 먼저 정렬하고 나이가 같을 때 먼저 가입한 순으로 정렬하는 문제다. JS 정렬에서는 그대로 위치가 들어온대로 유지되는 stable sort을 제공하기 때문에 나이를 기준으로 정렬하면 된다.1) N 입력 받음const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let N = Number(input[0]);let arr =[];for(let i=i;i2) 정렬 arr.sort((a,b)=>a[0]-b[0]);3) 값 출력let answer = "";for..

BOJ - 18870 좌표 압축

문제 : https://www.acmicpc.net/problem/18870문제 등급: 실버2 문제 아이디어 ; 정렬 후 딕셔너리를 사용해서 index를 순위로 표현 해준다. 문제 풀이 1) 좌표 압축 : 각 값을 크기 순위로 변형 하는 것이다. 문제 이해 부터 어려웠는데 결론적으로 각각 입력 받은 좌표값들이전체 좌표값들 중에서 몇 번째로 큰 좌표인지를 입력받은 형태와 동일하게 출력 해준다. 2) 입력 배열 const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let N = Number(input[0]);let arr = input[1].split(" ").map(Number);3) 중복 제거 및 ..

BOJ - 1181 단어 정렬

문제 : https://www.acmicpc.net/problem/1181문제 등급: 실버5문제 풀이: 길이가 짧은 것부터라는 조건이 있으니 정렬 기능이 들어가야 할 것이라 생각했고 또한 중복된 단어는 허용하지 않는다는 조건으로 인해 Set 즉 집합 조건을 생각할 수 있었다. 길이가 같으면 사전순이라는 말 또한 JS에서는 return 1 , 0 , -1 을 통해 오름차순 , 동치 , 내림차순을 필터링 해준다는 것을 알 수 있었다. 시간복잡도 : O(NlogN)const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let N = Number(input[0]);// 1. 입력 받음let arr = [];..