본문 바로가기

Algorithm/Baekjoon82

[백준] 2775번 : 부녀회장이 될테야 - Java https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 주의점 가장 첫 줄 : 테스트 케이스 테스트 케이스 다음 줄부터 두 줄씩 묶어 k 와 n 이 주어짐 아파트 : 0층부터 시작, 각 층은 1호부터 시작 알고리즘 k 층 n 호 = (k-1) 층 1 호 + (k-1) 층 2 호 + ... + (k-1) 층 n 호 입력 조건 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1 2022. 3. 26.
[백준] 10250번 : ACM 호텔 -Java https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 알고리즘 방 배정 우선순위 엘리베이터로부터 가까운 거리부터 배정 거리가 같은 경우 낮은 층수부터 배정 (일반 아파트 호수 매김 방법과 동일함) 1. Y (층) 구하기 int Y; if(N % H == 0) { Y = H * 100; } else { Y = (N % H) * 100; } 2. X (거리) 구하기 int X; if(N % H == 0) { X = N / H; } else .. 2022. 3. 24.
[백준] 2869번 : 달팽이는 올라가고 싶다 - Java https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 주의점 1. 시간 제한 2. 정상에 올라간 후에는 미끄러지지 않는다. 알고리즘 분석 달팽이가 하루(낮 + 밤) 동안 올라가는 높이(미터) 하루에 (A - B) 미터씩 총 V미터 BUT 달팽이가 목표 지점에 도달한 날(정상에 올라간 후)에는 미끄러지지 않는다. ➡ 총 (V - B) 미터를 올라가는 셈 결론 최소한 며칠이 걸리는지 일(日) 수 = (V - B) / (A - B) 적용 (V - B) % (A - B) == 0 남은 미터가 없다는 의미 = 정상까.. 2022. 3. 24.
[백준] 1193번 : 분수찾기 - Java https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 알고리즘 T= 분모 + 분자 대각선 칸의 개수 = T - 1 = 현 대각선의 원소의 개수 = curr_crss_cnt 초록색 T = 짝수 = (T % 2 == 0) 대각선 칸의 개수 = 홀수 좌측 하단에서 우측 상단 방향(↗) 분홍색 T = 홀수 = (T % 2 == 1) 대각선 칸의 개수 = 짝수 우측 상단에서 좌측 하단 방향(↘) 풀이 1. Scanner import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner i.. 2022. 3. 23.
[백준] 2292번 : 벌집 - Java https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 알고리즘 N 벌집 개수(방 개수) COUNT (최소 루트) 1 1 1 2 ~ 7 6 2 8 ~ 19 12 3 20 ~ 37 18 4 38 ~ 61 24 5 N이 속해 있는 범위 내의 숫자들 : 최소 루트가 동일함 벌집 개수 : 6의 배수로 증가 풀이 1. Scanner import java.util.Scanner; public class Main { public static void main(String[.. 2022. 3. 23.
[백준] 1712번 : 손익분기점 - Java https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net 주의점 처음으로 이익이 발생하는 지점의 판매량 출력 A, B, C = 자연수 알고리즘 고정 비용(불변 비용) = A (상품 개수와 상관 없이 항상 동일함) 가변 비용 = B 상품 가격 = C 상품 개수 = n n x 상품 가격(C) > 고정 비용(A) + (n x 가변 비용(B)) n x C = 총 수입 //총 수입 = 총 비용 n x C = A + (n x B) nC = A + nB nC - nB =.. 2022. 3. 22.
[백준] 1316번 : 그룹 단어 체커 - Java https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 주의점 문자열의 문자가 연속되지 않아야 함 + 이전에 해당 문자가 입력된 적이 있으면 그룹 단어가 아님 그룹 단어의 개수 출력 풀이 1. Scanner import java.util.Scanner; public class Main { /* main & check 함수에서 Scanner 쓰기에 main 함수 밖에 전역 변수로 static 붙인 Scanner 생성 */.. 2022. 3. 22.
[백준] 2941번 : 크로아티아 알파벳 - Java https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 주의점 크로아티아 알파벳 개수 세기 배열 사용할 때 인덱스가 범위를 벗어나는지 유의해야 8개의 문자는 특정 조건에 의해 변경되어 하나의 문자를 이룸 풀이 1. Scanner import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new S.. 2022. 3. 22.
[백준] 5622번 : 다이얼 - Java https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 주의점 대문자로 입력 시간의 합 구하기 구현 방법 Scanner + for 문 + switch-case BufferedReader + for 문 + switch-case System.in + for 문 + switch-case 풀이 1. Scanner + for 문 + switch-case import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scan.. 2022. 3. 21.
[백준] 2908번 : 상수 - Java https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 주의점 입력 받는 두 수 : 세 자릿수 고정 + 공백 기준으로 구분됨 입력 받은 두 수를 뒤집은 값 중 더 큰 값 출력 구현 방법 Scanner + StringBuilder.reverse() BufferedReader + StringTokenizer + StringBuilder.reverse() System.in.read() + 연산 풀이 1. Scanner + StringBuilder.reverse() im.. 2022. 3. 21.
[백준] 1152번 : 단어의 개수 https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 주의점 문자열 앞뒤에 공백이 있을 수 있음 = 공백의 개수 대로 숫자를 세면 예외 발생할 수 있음 구현 방법 1. 입력 1.1. Scanner & BufferedReader 많이 쓰는 입력 방식 1.2. System.in.read() 기본 입력 스트림 buffer 사용 X 원시 입력 형태로 문자 하나씩 읽어들여 문자가 공백인지 아닌지에 따라 count++ 하기 2. 공백 기준으로 분리 2.1.. 2022. 3. 21.
[백준] 1157번 : 단어 공부 - Java https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 주의점 가장 많이 반복된 문자가 2개 이상이면 ? 출력 대문자, 소문자 구분 X 출력 문자 = 대문자 참고 자료 아스키코드 표 구현 방법 System.in.read() read(): 값을 문자 타입으로 받음 문자를 하나씩만 가져올 수 있음 + 아스키코드로 변환하여 가져옴 Scanner, BufferedReader 사용하지 않고 입력값을 받을 수 있음 Buffer (InputStream) 사용하기에 효율적임 IOException 처.. 2022. 3. 18.