Computer Sciences(236)
-
[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 -
[Baekjoon] 5622번 문제풀이 - 다이얼
문제를 보자마자 ASCII 코드를 활용하여 풀면 되겠다는 생각이 들었습니다. If, else-if 문 혹은 switch 문을 사용할 수 있습니다. 먼저 If, else-if 문으로 작성한 코드를 보도록 합시다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Baekjoon5622 { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; try { str = br.readLine()..
2020.08.07 -
[Baekjoon] 2908번 문제풀이
입력받은 문자열을 뒤집은 뒤 두 문자열을 정수로 변환하고 비교하여 출력하면 해결되는 문제입니다. StringBuffer 객체를 사용하여 문자열을 뒤집었습니다. Java에서 String 객체는 내부 문자열을 수정할 수 없지만, StringBuffer 객체는 문자열을 저장하는 가변 버퍼를 가지고 있기 때문에 저장된 문자열의 수정이 가능합니다. StringBuffer의 reverse 메소드를 사용하면 문자열을 뒤집을 수 있습니다. 그리고 객체를 문자열로 변환하기 위해 toString() 메소드를 사용합니다. 아래 reverseString 메소드가 그 결과입니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStre..
2020.08.05 -
[Baekjoon] 1152번 문제풀이
문자열을 입력받고 공백 단위로 나누어 그 개수를 세는 문제입니다. StringTokenizer를 이용하면 쉽게 해결될 것으로 보입니다. StringTokenizer는 Java에서 하나의 문자열을 여러 개의 문자열로 분리할 때 사용되는 클래스입니다. 문자열을 분리하는 기준 문자를 구분 문자(delimiter)라고 하고 나누어진 문자열을 토큰(token)이라고 합니다. 코드를 작성해봅시다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; class Baekjoon1152 { public static void main(String[]..
2020.08.05