본문 바로가기

알고리즘119

[Softeer] 장애물 인식 프로그램 JS https://softeer.ai/practice/6282 자율주행팀 SW 엔지니어인 당신에게 장애물과 도로를 인식할 수 있는 프로그램을 만들라는 업무가 주어졌다. [그림 1] 지도 예시 우선 [그림 1]과 같이 정사각형 모양의 지도가 있다. 1은 장애물이 있는 곳을, 0은 도로가 있는 곳을 나타낸다. 당신은 이 지도를 가지고 연결된 장애물들의 모임인 블록을 정의하고, 불록에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 장애물이 좌우, 혹은 아래위로 붙어 있는 경우를 말한다. 대각선 상에 장애물이 있는 경우는 연결된 것이 아니다. [그림 2] 블록 별 번호 부여 [그림 2]는 [그림 1]을 블록 별로 번호를 붙인 것이다. 지도를 입력하여 장애물 블록수를 출력하고, 각 블록에 속하는 장애물의 수를 .. 2024. 1. 29.
[Softeer] 금고털이 JS https://softeer.ai/practice/6288 풀이 문제에서 이해가 잘 안 가는 부분이 무게당 가격 P 이 부분이였다. 예를 들어 무게의 단위가 kg라고 한다면 무게당 가격 = 1kg당 가격이라고 볼 수 있다. 금속1: 총 무게 90kg, 1kg당 가격은 1 금속2: 총 무게 70kg, 1kg당 가격은 2 최대가격을 가방에 담아야하므로 가격이 큰 순으로 내림차순하고 더 이상 가방에 담을 수 없을 때까지 큰 가격순으로 더하면 된다 (그리디) const readline = require('readline'); const rl = readline.createInterface({ input : process.stdin, output : process.stdout }); const lines = [].. 2024. 1. 25.
[Softeer] JS 입출력 const readline = require('readline'); const rl = readline.createInterface({ input : process.stdin, output : process.stdout }); const lines = []; // input rl.on('line', input => { // 여기에서 input은 문제에 제시된 입력예시가 string형태로 한 줄씩이다 lines.push(input.split(' ').map(e => parseInt(e))) }) // output rl.on('close', () => { // 출력예시대로 출력한다 console.log() process.exit(); }) 예를 들어 A+B를 구하는 코드를 짜보자 const readline .. 2024. 1. 25.
[Softeer] 강의실 배정 JS (그리디) https://softeer.ai/practice/6291 강의가 끝나는 시간이 빠른거만 계속 고르면 된다 greedy const readline = require('readline'); const rl = readline.createInterface({ input : process.stdin, output : process.stdout }); const lines = []; rl.on('line', input => { lines.push(input.split(' ').map(e => parseInt(e))) }) rl.on('close', () => { const schedules = lines.slice(1).sort((a, b) => a[1]-b[1]); // 끝나는 시간을 기준으로, 오름차순 le.. 2024. 1. 25.
[프로그래머스 LV2] 우박수열 JS https://school.programmers.co.kr/learn/courses/30/lessons/134239 문제 설명 콜라츠 추측이란 로타르 콜라츠(Lothar Collatz)가 1937년에 제기한 추측으로 모든 자연수 k에 대해 다음 작업을 반복하면 항상 1로 만들 수 있다는 추측입니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2.결과로 나온 수가 1보다 크다면 1번 작업을 반복합니다. 예를 들어 주어진 수가 5 라면 5 ⇒ 16 ⇒ 8 ⇒ 4 ⇒2 ⇒ 1 이되어 총 5번만에 1이 됩니다. 수가 커졌다 작아지기를 반복하는 모습이 비구름에서 빗방울이 오르락내리락하며 우박이 되는 모습과 비슷하다고 하여 우박수 또는 우박수열로 불리기.. 2024. 1. 19.
[프로그래머스 LV3] 아이템 줍기 JS https://school.programmers.co.kr/learn/courses/30/lessons/87694 문제 설명 다음과 같은 다각형 모양 지형에서 캐릭터가 아이템을 줍기 위해 이동하려 합니다. 지형은 각 변이 x축, y축과 평행한 직사각형이 겹쳐진 형태로 표현하며, 캐릭터는 이 다각형의 둘레(굵은 선)를 따라서 이동합니다. 만약 직사각형을 겹친 후 다음과 같이 중앙에 빈 공간이 생기는 경우, 다각형의 가장 바깥쪽 테두리가 캐릭터의 이동 경로가 됩니다. 단, 서로 다른 두 직사각형의 x축 좌표 또는 y축 좌표가 같은 경우는 없습니다. 즉, 위 그림처럼 서로 다른 두 직사각형이 꼭짓점에서 만나거나, 변이 겹치는 경우 등은 없습니다. 다음 그림과 같이 지형이 2개 이상으로 분리된 경우도 없습니다... 2024. 1. 18.