Computer Sciences/Problem Solve(155)
-
[Baekjoon] 7568번 : 덩치
7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 브루트 포스 문제 중 하나입니다. 첫 번째 인원부터 모든 인원과 비교해가면서 몸무게와 키가 모두 크다면 순위를 증가시킨 뒤 출력하면 됩니다. // javascript const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const input = []; rl.on('line', (l..
2021.05.30 -
[Baekjoon] 2750번: 수 정렬하기
2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 간단한 수 정렬 문제입니다. 입력받은 뒤 정렬하기만 하면 됩니다. // javascript const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const input = []; rl.on('line', (line) => { input.push(line); }).on('close', () => { c..
2021.05.30 -
[Baekjoon] 2839번 문제풀이 - 설탕 배달
이 문제는 생각보다 복잡했습니다. 쉽게 생각하면 쉬운데 어렵게 생각하면 끝도 없이 어렵더라구요. 문제 분석부터 해봅시다. 설탕을 옮기려는데 3kg 봉투와 5kg봉투로 딱 맞춰서 가져가려고 합니다. 이때 봉투의 개수를 최소화하여 가져갑니다. 만약 맞아떨어지지 않는다면 -1을 출력합니다. 쉽게 풀어쓰면 아래와 같습니다. 선임이 설탕을 담아야 하니 3kg와 5kg 봉투를 최소한으로 사용하려면 어떻게 해야되는지 업무를 줍니다. 5kg 봉투로 담는 것이 좋겠죠? 그래야 최소한으로 봉투를 사용할 수 있으니까요. 선임에게 설탕의 무게를 물어봅니다. 만약 설탕의 무게가 5kg으로 나누어 떨어진다면 봉투의 개수는 그 몫이 될 것이고, 몫만큼 봉투의 개수를 요청하면 됩니다. 아니라면 3kg 봉투에 설탕을 담고, 봉투 하나..
2020.08.11 -
[Baekjoon] 1717번 문제풀이 - 손익분기점
이 문제의 핵심은 2가지입니다. 첫 번째는 손익분기점을 계산하는 알고리즘, 그리고 손익분기점이 존재하지 않는다는 조건을 생각하는 것입니다. 먼저 첫 번째를 생각해봅시다. 고정비용(a)은 말 그대로 고정되어있고, 가변비용(b)은 제품을 생산할 때마다 증가합니다. 판매익(c)은 제품을 판매할 때마다 증가하구요. 그렇다면 알고리즘은 간단합니다. a + b * i < c * i 일 때의 i값이 손익분기점이 됩니다. 수학식으로 정리하면 a/(c-b) < x 입니다. 그럼 이제 두 번째를 생각해봅시다. 손익분기점이 존재하지 않는다는 것은 무슨 뜻일까요? 바로 제품의 가격이 가변비용보다 작을 때를 말합니다. 생각해봅시다. 내가 제품을 만들 때 들어간 비용이 1000원이라고 칩시다. 그런데 이 제품의 가격을 1000원..
2020.08.11 -
[Baekjoon] 1316번 문제풀이 - 그룹 체커
문제가 생각외로 까다로웠습니다. 쉽게 풀릴 것 같았는데 디버깅을 해보니 끝도 없는 오류... 나중에 자바와 알고리즘을 더 공부하고 나면 더 쉽게 풀 수 있을거라 생각합니다. 접근 방법을 설명하겠습니다. 먼저 입력받을 단어의 개수, 단어를 입력받습니다. 문자열이 한 글자일 경우 무조건 그룹 단어이므로 검사하지 않습니다. 그리고 단어의 연속되는 문자를 제거합니다. 이때 제거된 문자 자리에는 임의의 문자를 넣어 중복을 방지합니다. 연속되는 문자를 제거했으면 이제 문자의 중복을 검사합니다. 여기서 문자가 중복된다면 false, 중복되지 않는다면 true로 지정되는 flag를 지정합니다. 그리고 마지막으로 flag가 true라면 카운트를 증가시킵니다. 코드를 보겠습니다. 좀 복잡합니다. import java.io..
2020.08.07 -
[Baekjoon] 2941번 문제풀이 - 크로아티아 알파벳
문제를 이해하는 것부터 난관이었어요 ㅠㅜ 기존 알파벳에 크로아티아 알파벳이 추가된 것이고 여러 문자로 이루어져 있으니 그 문자들을 하나로 보고 입력받은 문자열의 알파벳 개수를 세면 되는 것이었습니다. 한 마디 > a~z + 크로아티아 알파벳 이 문제를 푸는 방법으로 생각한 것은 먼저 크로아티아 알파벳들을 배열로 만듭니다. 그리고 문자열에서 배열의 순서대로 해당 문자를 포함하고 있다면 카운트하고 그 문자를 공백으로 치환합니다(나중에 크로아티아 알파벳을 제외한 문자의 길이를 얻기 위해서). 비교가 모두 끝나면 문자열의 공백을 제거하고 그 문자열의 길이를 얻으면 크로아티아 알파벳 개수 + 알파벳 개수를 구할 수 있습니다. 코드를 봅시다. import java.io.BufferedReader; import ja..
2020.08.07