알고리즘
-
백준 알고리즘 8단계 기본 수학1 1712번 문제입니다. Q. 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 총 B만원의 가변 비용이 든다고 한다. 노트북 판매 가격을 C라고 했을 때, 손익분기점(총 수입이 총 비용보다 많아지게 되는 지점)을 구하는 프로그램을 작성하시오. [입력] - 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. - A : 고정 비용 - B : 가변 비용 - C : 판매 가격 [조건] - A, B, C는 21억 이하의 자연수이다. - 첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다. 풀이 손익분기점을 ..
[백준/Java]Q1712 2021. 7. 12. -
백준 알고리즘 7단계 문자열 1316번 문제입니다. Q. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. [입력] - 첫째줄 단어의 개수 N개가 주어진다. - 둘째줄 N개의 단어가 주어진다. [조건] - N은 100보다 작거나 같은 자연수이다. - 주어진 단어는 알파벳 소문자로만 되어있고 중복되지 않는다. - 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. Ex) ccazzzzbb => cazb 연속(그룹 단어) abc => abc 연속(그룹 단어) test => t가 떨어져 나타남(그룹 단어X) 풀이 이 문제의 접근은 그룹 단어의 정의에서 시작했다. 그룹 단어는 단어에 존재하는 모든 문자에 대해 각 문자가 연속해서 나타나는 ..
[백준/Java]Q1316 2021. 7. 8. -
백준 알고리즘 8단계 기본 수학1 1712번 문제입니다. Q. 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 총 B만원의 가변 비용이 든다고 한다. 노트북 판매 가격을 C라고 했을 때, 손익분기점(총 수입이 총 비용보다 많아지게 되는 지점)을 구하는 프로그램을 작성하시오. [입력] - 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. - A : 고정 비용 - B : 가변 비용 - C : 판매 가격 [조건] - A, B, C는 21억 이하의 자연수이다. - 첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다. 풀이 이 문제는 판..
[백준/Java]Q1712 2021. 7. 8. -
백준 알고리즘 6단계 함수 1065번 문제입니다. Q. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. [입력] - 1000보다 작거나 같은 자연수 N이 주어진다. [조건] - 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. - 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. 풀이 이 문제를 풀기 위해선 등차수열의 이해가 필요했다. 등차수열은 두 수의 차이가 일정한 수열을 말하는데 간단히 아래와 같은 수열로 이해할 수 있다. 12345 : +1씩 증가 13579 : +2씩 증가 이제 반복문을 통해 각 자릿수를 비교한다면 어렵지 않게 풀 수 있다. 소스 package com.baek.algo; impor..
[백준/Java]Q1065 2021. 7. 8. -
백준 알고리즘 5단계 1차원 배열 4344번 문제입니다. Q. 학생들의 평균 점수를 구하는 프로그램을 작성하시오. [입력] - 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. - 둘째 줄부터 각 테스트 케이스마다 학생의 수 N이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. [조건] - 학생의 수 N은 1 ≤ N ≤ 1000인 정수이다. - 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. - 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.(문자형X) 풀이 이 문제의 핵심은 배열을 이용하는 것이었다. BufferedReader 클래스의 readLine() 메소드(입력받은 값을 한 줄로 읽어들임)를 이용해서 공백을 기준으로 배열에 담아 계산..
[백준/Java]Q4344 2021. 7. 8. -
백준 알고리즘 4단계 while문 1110번 문제입니다. Q. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. [입력] - 정수 N이 주어진다. [조건] - N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다. - 정수가 주어질 때 다음과 같은 연산을 할 수 있다. - 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그리고 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙여 새로운 수를 만든다. 반복 과정을 통해 최초 N이 되는 사이클을 구한다. Ex) 26 => 2+6=8(0+8) : 1 => 6+8=14 : 2 => 8+4=12 : 3 => 4+2=6(0+6) : 4(END) => 2+6=8..
[백준/Java]Q1110 2021. 7. 6. -
백준 알고리즘 3단계 for문 10871번 문제입니다. Q. 정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오. [입력] - 첫째 줄에 N과 X가 주어진다. - 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. [조건] - N은 1보다 크거나 작다. X는 10000보다 작거나 같다. - 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. - X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다. 이 문제는 정수형 배열을 이용해서 해결했다. 수열 A를 배열에 담고 반복문을 돌려 정수 X와 비교했다. 정수 X보다 작은 값들은 문자열에 담아 공백으로 구분해 출..
[백준/Java]Q10871 2021. 7. 6. -
백준 알고리즘 2단계 if문 2884번 문제입니다. Q. 45분 일찍 설정되는 알람 프로그램을 작성하시오. [입력] - 두 정수(H, M) [조건] - 첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다. - 입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다. 풀이 이 문제는 2가지가 핵심이었던 것 같다. 1. 45분을 기준으로 분기처리 : 입력값이 45보다 작다면 60을 기준으로 45를 빼줘야하기 때문에 (입력값+60) - 45 2. 자정(0:0)처리 : 입력값이..
[백준/Java]Q2884 2021. 7. 5.