Stay Hungry Stay Foolish

전체 글 423

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을 사용해서 상수를..

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

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

[Java] Math 클래스 주요 메서드

1. 기본 연산 메서드abs(x) : 절대값max(a, b) : 최대값min(a, b) : 최소값 2. 지수 및 로그 연산 메서드 exp(x) : e^x 계산log(x) : 자연 로그log10(x) : 로그 10pow(a, b) : a의 b 제곱  3. 반올림 및 정밀도 메서드 ceil(x) : 올림floor(x) : 내림rint(x) : 가장 가까운 정수로 반올림round(x) : 반올림  4. 삼각 함수 메서드 sin(x) : 사인cos(x) : 코사인tan(x) : 탄젠트  5. 기타 유용한 메서드 sqrt(x) : 제곱근cbrt(x) : 세제곱근random() : 0.0과 1.0 사이의 무작위 값 생성

알고리즘 2024.09.30

[자바 중급] 04. Wrapper class

기본형의 한계자바는 객체 지향 언어인데 int나 double같은 기본형은 객체가 아니기 때문에 다음과 같은 한계가 있다.객체가 아님 : 기본형 데이터는 객체가 아니기 때문에, 객체 지향 프로그래밍의 장점을 살릴 수 없다. 또한 기본형은 객체가 아니므로 메서드도 제공할 수 없다.null 값을 가질 수 없음 : 기본형 데이터 타입은 null값을 가질 수 없다.기본형의 한계를 해결하기 위해 도입된 것이 래퍼 클래스이다.  Wrapper class(래퍼 클래스)특정 기본형을 객체로 감싸서(Wrap) 만든 클래스를 래퍼 클래스라고 한다. 래퍼 클래스를 직접 만들 수도 있지만, 자바가 기본으로 제공해준다. 다음은 int 래퍼 클래스를 직접 만든 클래스이다.  직접 만든 래퍼 클래스public class MyInte..

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

[자바 중급] 03. String 클래스

String 클래스자바에는 문자열을 다룰 수 있는 String 클래스를 제공한다. String 클래스를 통해 문자열을 생성하는 방법은 2가지가 있다.쌍따옴표를 사용 : " "객체를 생성 : new String(" ")int, char같은 기본형은 소문자로 시작하지만 String은 대문자로 시작하는데 이는 참조형을 뜻한다. 참조형이라는 건 다른 말로 변수 하나에 String 인스턴의 참조값만 들어갈 수 있다는 말이다. 따라서 String 클래스를 사용할 때 객체를 생성해야 하지만 자바는 성능 최적화를 위해 문자열 풀을 사용하여 쌍따옴표(" ")만을 사용할 수 있게 했다. 기능(메서드) String 클래스에는 속성과 기능을 가진다. 따라서 문자열로 처리할 수 있는 다양한 기능을 제공한다. 주요 메서드는 다음..

[Java] String 클래스 주요 메서드

문자열 정보 조회length() : 문자열의 길이를 반환한다.isEmpty() : 문자열이 비어 있는지 확인한다. (길이가 0)isBlank() : 문자열이 비어 있는지 확인한다. (길이가 0이거나 공백(Whitespace)만 있는 경우), 자바 11charAt(int index) : 지정된 인덱스에 있는 문자를 반환한다. 문자열 비교equals(Object anObject) : 두 문자열이 동일한지 비교한다.equalsIgnoreCase(String anotherString) : 두 문자열을 대소문자 구분 없이 비교한다.compareTo(String anotherString) : 두 문자열을 사전 순으로 비교한다.compareToIgnoreCase(String str) : 두 문자열을 대소문자 구분 없..

알고리즘 2024.09.29

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