프로그래밍(Basic)

    [바미] 좌표 정렬하기

    문제 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 코드 const fs = require('fs'); const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); const N = parseInt(input[0], 10); const points = []; for (let i = 1; i { if (a.x === b..

    [바미] 소트인사이드

    문제https://www.acmicpc.net/problem/1427 1427번: 소트인사이드첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.www.acmicpc.net코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim();// 숫자를 문자열로 변환, 배열로 만들기const digits = input.split('');// 배열 정렬 (내림차순)digits.sort((a, b) => b - a);// 배열을 문자열로 다시 결합const result = digits.join('');console.log(res..

    [바미] 수 정렬하기 2

    문제 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 코드 const fs = require('fs'); const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); const N = parseInt(input[0], 10); const numbers = input.slice(1, N + 1).map(Number); // 오름차순 정렬 numbers.sort((..

    [바미] 커트라인

    문제 https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 코드 const fs = require('fs'); const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); const [N, k] = input[0].split(' ').map(Number); const scores = input[1].split(' ').map(Number); // 점수를 내림차순으로 정렬 scores.sort((a, b) => b - a); // 상을 받는 커트라인..

    [바미] 대표값 2

    문제 https://www.acmicpc.net/problem/2587 2587번: 대표값2 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + www.acmicpc.net 코드 const fs = require('fs'); const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n').map(Number); // 평균 계산 const average = Math.floor(input.reduce((acc, cur) => acc + cur, 0) / inpu..

    [바미] 수 정렬하기

    문제 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 코드 const fs = require('fs'); const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); const n = parseInt(input[0], 10); const numbers = input.slice(1).map(Number); // 첫 번째 줄을 제외하고 숫자로 변환 numbers.sort((a, b)..

    [바미] 설탕 배달 다국어

    문제 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 코드 function minBagsOfSugar(N) { let fiveKgBags = Math.floor(N / 5); // 가능한 한 많은 5kg 봉지 수 let remainingWeight = N % 5; // 5kg 봉지 사용 후 남은 무게 while (fiveKgBags >= 0) { if (remainingWeight % 3 === 0) { // 남은 무게가 3kg 봉지로 딱 맞을 경우 re..

    [바미] 영화감독 숌

    문제 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 코드 및 코드 설명 function findNthTitle(n) { let count = 0; // 666을 포함하는 숫자의 개수를 세기 위한 카운터 let num = 666; // 종말의 수 검색을 시작할 값 while (true) { if (num.toString().includes('666')) { // 숫자를 문자열로 변환하여 '666'이 포함되어 있는지 확인 count++; // ..

    [바미] 슬라이딩 윈도우 기법

    시작 안녕하세요. 지난번에 체스판 다시 칠하기문제를 풀면서 사용한 윈도우 슬라이딩 기법에 대해 자세히 알아보기 위해 포스팅을 해보려 합니다. 슬라이딩 윈도우 기법? 체스판 다시 칠하기 문제에서 설명했듯이 슬라이딩 윈도우 기법은 배열이나 리스트의 항목을 순차적으로 탐색할 때 사용하는 알고리즘 기법 중 하나입니다. 이 기법은 "창" 또는 "윈도우"라고 할 수 있는 고정된 크기의 부분 배열이나 서브 리스트를 이동시키면서 문제를 해결합니다. 이 윈도우는 데이터 구조를 통해 한 번에 한 항목씩 앞으로 이동하면서 연속적인 데이터의 범위를 처리합니다. 보통 슬라이딩 윈도우 기법은 아래와 같은 상황에서 사용하면 굉장히 유용합니다. 배열이나 리스트에서 고정된 크기의 윈도우를 슬라이드하면서, 각 윈도우에 대한 최대값 또는..