Stay Hungry Stay Foolish

전체 글 430

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을 해..

[자바 중급] 08. 중첩 클래스, 내부 클래스 2

지역 클래스(Local class)지역 클래스는 내부 클래스의 종류 중 하나로 내부 클래스의 특징을 그대로 가진다. 따라서 지역 클래스도 바깥 클래스의 인스턴스 멤버에 접근할 수 있다.class Outer { public void process() { //지역 변수 int localVar = 0; //지역 클래스 class Local {...} Local local = new Local(); }}  특징지역 클래스는 지역 변수처럼 코드 블럭 안에 클래스를 선언한다.지역 클래스는 지역 변수에 접근할 수 있다.자신의 인스턴스 변수에 접근할 수 있다.자신이 속한 코드 블럭의 지역 변수 혹은 매..

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페이지가 남았으므로..

[자바 중급] 07. 중첩 클래스, 내부 클래스 1

중첩 클래스, 내부 클래스클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스(Nested Class)라 한다.class Outer { ... //중첩 클래스 class Nested { ... }}  중첩 클래스 종류중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다. 중첩 클래스의 의미는 정적과 내부 클래스를 모두 포함한 것을 말하며, 정적 중첩 클래스는 말 그대로 정적 중첩 클래스를 의미한다. 내부 클래스는 내부, 지역, 익명 클래스를 포함한 것을 말한다.정적 중첩 클래스 내부 클래스 종류내부 클래스 : 바깥 클래스의 인스턴스의 멤버에 접근지역 클래스 : 내부 클래스의 특징 + 지역 변수에 접근익명 클래스 : 지역 클래스의 특징 + 클..

[자바 중급] 06. 날짜와 시간

날짜와 시간 라이브러리아래의 표는 oracle에서 제공하는 문서로 날짜와 시간 라이브러리이다.  LocalDate, LocalTime, LocalDateTime앞에 Local (현지의, 특정 지역의)이 붙는 이유는 세계 시간대를 고려하지 않아서 타임존이 적용되지 않기 때문이다.  특정 지역의 날짜와 시간만 고려할 때 사용한다.LocalDate : 날짜만 표현할 때 사용한다. 년, 월, 일을 다룬다. 예) 2013-11-21 LocalTime : 시간만을 표현할 때 사용한다. 시, 분, 초를 다룬다. 예) 08:20:30.213초는 밀리초, 나노초 단위도 포함할 수 있다. LocalDateTime : LocalDate 와 LocalTime 을 합한 개념이다. 예) 2013-11-21T08:20:30.213..

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 증가시킨다...

[자바 중급] 05. 열거형 Enum

타입 안전 열거형 패턴 - Enumenum은 enumeration의 줄임말로 변역하면 열거라는 뜻이고, 어떤 항목을 나열하는 것을 뜻한다. 타입 안전 열거형 패턴을 사용하면 나열한 항목만 사용할 수 있다. public class ClassGrade { public static final ClassGrade BASIC = new ClassGrade(); public static final ClassGrade GOLD = new ClassGrade(); public static final ClassGrade DIAMOND = new ClassGrade();} 위 코드는 타입 안전 열거형 패턴을 직접 구현한 것이다. BASIC, GOLD, DIAMOND라는 상수를 선언했다. static을 사용해서 상수를..