Stay Hungry Stay Foolish

BOJ 코딩테스트 184

BOJ 5086 : 배수와 약수 (Java/수학/Bronze 3)

[문제 링크] 👉 https://www.acmicpc.net/problem/5086설명두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.첫 번째 숫자가 두 번째 숫자의 약수이면 factor 출력첫 번째 숫자가 두 번째 숫자의 배수이면 multiple 출력첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니면 neither 출력두 수가 0이면, 프로그램을 종료한다. 풀이if { ...} else if { ...} else { ...}  Solutionsol.1import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedRea..

BOJ 10810 : 공 넣기 (Java/구현/Bronze 3)

[문제 링크] 👉 https://www.acmicpc.net/problem/10810설명바구니 개수 N개가 있고, N개의 바구니에 M번의 공을 넣는다. 처음엔 모두 빈 바구니이고, 바구니에는 1개의 공만 넣을 수 있다.입력이 만일 1 2 3 이라고 할 때, 1번째 바구니부터 2번째 바구니까지 3번 공을 넣는다.다음 입력이 3 4 4 라고 할 때, 3번째 바구니부터 4번째 바구니까지 4번 공을 넣는다.만일 바구니에 공이 들어가 있으면 공을 빼고 새로 공을 넣는다.그래서 N개의 바구니에 몇 번 공이 들어가 있는지 모두 출력하면 된다. 빈 바구니는 0을 출력한다. 풀이바구니에 공을 넣는 방법은 다음과 같다.for (int k = mInt[0] - 1; k  mInt 배열에는 i, j, k가 들어있다. i 번..

BOJ 1598 : 꼬리를 무는 숫자 나열 (Java/수학/Bronze 3)

[문제 링크] 👉 https://www.acmicpc.net/problem/1598설명원숭이는 두 개의 자연수를 아무거나 생각한다. 그리고 숫자판에서 두 개의 자연수 사이의 직각거리를 구하면 된다. 여기서 직각거리는 동서방향거리와 남북방향거리의 합을 뜻한다. 예를 들어 숫자판에서 11과 33을 생각했다고 하자. 그렇다면 11과 33사이의 직각거리는 8이 된다.(동서방향거리 : 6, 남북방향거리 : 2) 다음 그림에 잘 나타나있다. 풀이입력이 11과 33이라고 하자.숫자판에서 숫자가 아래로 4개씩, 즉 4의 배수마다 숫자가 나열되기 때문에 4로 나누어줘야 한다. 위치 도출 방법11을 4로 나누면 몫은 2, 나머지는 3이다. 이 말은 즉, 11은 2번째 줄 다음줄인 3번째 줄에 나머지가 3이므로 3번째에 ..

BOJ 1284 : 집 주소 (Java/구현/Bronze 3)

[문제 링크] 👉 https://www.acmicpc.net/problem/1284설명각 숫자 사이에는 1cm의 여백이 들어가야한다.1은 2cm의 너비를 차지해야한다. 0은 4cm의 너비를 차지해야한다. 나머지 숫자는 모두 3cm의 너비를 차지한다.호수판의 경계와 숫자 사이에는 1cm의 여백이 들어가야한다.여백을 포함한 호수판의 총 너비를 구해야 한다. 풀이문자열로 숫자를 입력받는다.split() 메서드를 사용해 문자열을 분리하여 배열에 저장한다.반복문으로 배열에서 하나씩 꺼낸다.각 문자를 정수형으로 변환하고 각 조건에 맞게 계산한다공백을 포함시켜야 하므로 숫자 너비에 각 1씩 더해야 한다. split() 메서드String[] nums = num.split(""); 분리한 것을 배열에 저장해야 한다. ..

BOJ 1267 : 핸드폰 요금 (Java/구현/Bronze 3)

[문제 링크] 👉 https://www.acmicpc.net/problem/1267설명영식 요금제는 30초마다 10원씩 청구된다. 이 말은 만약 29초 또는 그 보다 적은 시간 통화를 했으면 10원이 청구된다. 만약 30초부터 59초 사이로 통화를 했으면 20원이 청구된다. 민식 요금제는 60초마다 15원씩 청구된다. 이 말은 만약 59초 또는 그 보다 적은 시간 통화를 했으면 15원이 청구된다. 만약 60초부터 119초 사이로 통화를 했으면 30원이 청구된다. 통화 시간 목록이 주어지면 어느 요금제를 사용 하는 것이 저렴한지 출력하는 프로그램을 작성하시오. 풀이각 시간마다 30과 60으로 나누고, 그 몫에 + 1을 해준다.( 각 시간 /  30 ) + 1 ( 각 시간 /  60 ) + 1 + 1을 해..

BOJ 9295 : 주사위 (Java/구현/Bronze 4)

[문제 링크] 👉 https://www.acmicpc.net/problem/9295 설명두 개로 들어온 입력의 수를 더해서 출력 형식에 맞게 출력하면 된다.  Solutionimport java.io.*;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); for (int i = 0; i   👩‍💻 회고토큰을..

BOJ 5596 : 시험문제 (Java/구현/Bronze 4)

[문제 링크] 👉 https://www.acmicpc.net/problem/5596 설명두 명의 총 점수(정보, 국어, 과학, 영어) 중 더 높은 점수를 출력하는 문제이다. 풀이StringTokenizer공백을 포함하는 경우의 정수형을 입력하고 싶을 때 이용, 두 번째 인자에는 default로 공백이다. "/" 기준으로 분리하고 싶으면 인자로 넘기면 된다.StringTokenizer st1 = new StringTokenizer(br.readLine()); 총 두 줄을 입력받으려면 인스턴스를 두 개 생성한다. 굳이 여러 개 생성하지 않고 반복문으로 입력받아도 되긴 하다.StringTokenizer st1 = new StringTokenizer(br.readLine());StringTokenizer st..

BOJ 5532 : 방학 숙제 (Java/구현/Bronze 4)

[문제 링크] 👉 https://www.acmicpc.net/problem/5532 설명방학은 총 L일이다. 수학은 총 B페이지, 국어는 총 A페이지를 풀어야 한다. 상근이는 하루에 국어를 최대 C페이지, 수학을 최대 D페이지 풀 수 있다. 상근이가 겨울 방학동안 숙제를 하지 않고 놀 수 있는 최대 날의 수를 구하는 프로그램을 작성하시오. 풀이하루에 풀 수 있는 양을 총 페이지 수로 나눠서 최소한 며칠까지 다 풀 수 있는지를 구한다. - 국어 총 페이지 수 / 국어 하루 할당량, 수학 총 페이지 수 / 수학 하루 할당량만약에 계산한 결과가 국어는 몫이 4, 나머지가 1일 때, 1페이지가 남았으므로 4일 + 1일을 해서 총 5일만에 끝낼 수 있고,수학은 몫이 3, 나머지가 6일 때, 6페이지가 남았으므로..

BOJ 5554 : 심부름 가는 길 (Java/구현/Bronze 4)

[문제] 👉 https://www.acmicpc.net/problem/5554설명이동 시간을 나타내는 초가 주어지면 총 이동 시간을 구하는 문제이다. 풀이단순한 수학 구현 문제이다.초 단위를 이용하는 문제이므로 주어진 초의 합을 60으로 나누고 몫과 나머지를 구하면 된다. 1. 초 단위로 주어진 값을 모두 더한다. -> 31 + 34 + 7 + 1512. 더한 값을 60으로 나누면 분이 된다.3. 더한 값을 60으로 나눈 나머지는 초가 된다.  Solutionimport java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffere..

BOJ 5524 : 입실 관리 (Java/구현/Bronze 4)

[문제] 👉 https://www.acmicpc.net/problem/5524설명문자열을 모두 소문자로 변환하는 문제이다. 풀이toLowerCase() 메서드 사용- 소문자 대문자 상관없이 모두 소문자로 변환 사용 방법String str = "ABCDE";String new_str = str.toLowerCase(); 모두 대문자로 변환하는 메서드는 toUpperCase() 이다. Solutionimport java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System..

BOJ 4470 : 줄번호 (Java/구현/Bronze 4)

[문제] 👉  https://www.acmicpc.net/problem/4470설명입력받은 문자열에 번호를 차례로 부여하는 문제이다. 풀이단순히 번호를 부여하는 문제이므로 풀이 설명 생략Scanner 대신 BufferReader 와 BufferedWriter 사용  BufferedReader/BufferedWriter 사용 방법 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 입력 선언 String str = br.readLine(); //키보드로 입력 받기 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 출력 선언 bw..

BOJ 4299 : AFC 윔블던 (Java/구현/Bronze 4)

https://www.acmicpc.net/problem/4299설명문제에서 서론이 길지만 핵심은 맨 아랫줄이다. 두 팀의 점수의 합과 차가 주어지고 그걸 이용해서 스코어를 구하는 것이다. 단순한 수학 문제이다. 풀이점수의 합에서부터 경우의 수를 다 확인하면서 문제를 풀었다. 1씩 마이너스 해가면서 입력된 점수차와 맞는지 확인했다.  1. mk는 상대팀, afc는 우리팀이라고 가정한다. (헷갈림 방지)2. while 문점수합에서 0을 빼서 afc 변수에 저장한다. 경우의 수를 다 확인하는 것이므로 먼저 상대팀 점수가 0이라고 가정하고 푼다. 우리팀인 afc 점수에서 상대팀인 mk를 뺀 값이 점수차와 같으면 스코어를 출력하고 while문을 빠져나온다.점수차가 같지 않으면 상대팀 mk 점수를 1 증가시킨다...

BOJ 2845 : 파티가 끝나고 난 뒤 (Java/구현/Bronze 4)

https://www.acmicpc.net/problem/2845설명상근이는 1m^2당 몇 명의 사람이 있었는지 알고있다. 서로 다른 5개의 신문을 보면서 그 기사에 적혀져있는 참가자의 수를 적었다. 상근이는 자신이 알고있는 참가자의 수가 정확하다고 생각한다. 각 신문 기사에 실려있는 참가자의 수가 몇 명 만큼 잘못되어있는지 구하는 프로그램을 작성하시오. 풀이 1m^2당 사람의 수와 넓이를 곱하면 넓이당 몇 명의 사람이 수용되는지 알 수 있다. 신문에 실린 참가자 수에서 곱한 결과를 빼야 하는 단순한 연산 문제이다. 연산 과정은 참가자 수를 하나씩 입력받고 바로 연산 후 결과 배열에 저장해서 최종적으로 결과를 출력한다. Solutionimport java.util.Scanner;public class M..

BOJ 2083 : 럭비 클럽 (Java/구현/Bronze 4)

https://www.acmicpc.net/problem/2083설명나이가 18세 이상이거나, 몸무게가 80kg 이상이면 성인부. 그 외에는 청소년부다. 입력받은 대로 바로 결과 출력한다. 풀이1. 입력은 String으로 받되, 공백 기준으로 분리해서 배열에 저장  2. 나이와 몸무게는 int형으로 변환 필요 - java.lang.Integer 클래스의 parseInt() 혹은 valueOf() 메소드를 사용  ※ 주의할 점 : 동일한 걸 찾으려고 할 때 == 말고 무조건 eqauls()  Solutionimport java.util.Scanner;public class _2083 { public static void main(String[] args) { Scanner sc = new..

BOJ 29731 : 2033년 밈 투표 (Java/구현/Bronze 5)

https://www.acmicpc.net/problem/29731풀이배열에 특정 값이 있는지 확인하는 방법  - equals() 메서드 사용 : true/false 반환 Solutionsol.1import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); // 정수 n 입력 받아서 저장 String[] pledge = {"Never gonna give you up", "Never gonna let you down", "Never gonn..