Stay Hungry Stay Foolish

전체 글 430

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

[자바 중급] 02. 불변 객체

기본형과 참조형의 공유자바의 데이터 타입은 크게 기본형(Primitive Type)과 참조형(Reference Type)으로 나눌 수 있다.기본형 : 하나의 값을 여러 변수에서 절대로 공유하지 않는다.참조형 : 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다. 공유 참조와 사이드 이펙트사이드 이펙트(Side Effect)는 프로그래밍에서 어떤 계산이 주된 작업 외에 추가적인 부수 효과를 일으키는 것을 말한다.사이드 이펙트는 프로그래밍에서는 부정적인 의미로 사용된다. 프로그램의 특정 부분에서 발생한 변경이 의도치 않게 다른 부분에 영향을 미치기 때문에 디버깅이 어려워지고 코드의 안정성이 저하될 수 있다. 사이드 이펙트가 발생한 경우의 예제package lang.immutable.address;p..

[자바 중급] 01. Object 클래스

Object 클래스자바에서 모든 클래스의 최상위 부모 클래스는 항상 Object 클래스이다. 부모를 상속받으려면 'extends'를 명시적으로 붙여 상속을 받아야 한다. 그러나 Object 클래스는 'extends'를 붙이지 않아도 상속된다. 즉 부모가 없으면 묵시적으로 Object 클래스를 상속받는다.  Object 클래스가 최상위 부모 클래스인 이유는 다음과 같다. 공통 기능 제공객체의 정보를 제공하는 toString()객체의 같음을 비교하는 equals()객체의 클래스 정보를 제공하는 getClass()기타 여러가지 기능다형성의 기본 구현 Object 다형성의 장점어떤 객체든지 인자로 전달할 수 있다는 장점이 있다. 한계Object는 모든 객체를 대상으로 다형적 참조를 할 수 있다. Object를 ..

BOJ 10886번 : 0 = not cute / 1 = cute (Java/구현/Bronze 3)

10886번: 0 = not cute / 1 = cute 준희는 자기가 팀에서 귀여움을 담당하고 있다고 생각한다. 하지만 연수가 볼 때 그 의견은 뭔가 좀 잘못된 것 같았다. 그렇기에 설문조사를 하여 준희가 귀여운지 아닌지 알아보기로 했다. www.acmicpc.net 설명 다음 N개의 줄에는 각 줄마다 각 사람이 설문 조사에 어떤 의견을 표명했는지를 나타내는 정수가 주어진다. 0은 준희가 귀엽지 않다고 했다는 뜻이고, 1은 준희가 귀엽다고 했다는 뜻이다. 준희가 귀엽지 않다는 의견이 더 많을 경우 "Junhee is not cute!"를 출력하고 , 귀엽다는 의견이 많을 경우 "Junhee is cute!"를 출력하라. Solution Java import java.util.Scanner; public..

[자바 기초] 06. 스캐너(Scanner)

Scanner System.out 을 통해서 출력을 했듯이, System.in 을 통해서 사용자의 입력을 받을 수 있다. 그런데 자바가 제공하는 System.in 을 통해서 사용자 입력을 받으려면 여러 과정을 거쳐야해서 복잡하고 어렵다. 자바는 이런 문제를 해결하기 위해 Scanner 라는 클래스를 제공한다. 이 클래스를 사용하면 사용자 입력을 매우 편리하게 받을 수 있다. 형식 import java.util.Scanner; Scanner를 쓰기 위해선 java.util 패키지를 import 해주어야 한다. Scanner scanner = new Scanner(System.in); 그 다음, main 내에 Scanner의 객체를 만든다. Scanner는 System.in을 사용해서 사용자의 입력을 편리하..

자바 2024.03.26

BOJ 2441번 : 별 찍기 - 4 (Java/구현/Bronze 4)

2441번: 별 찍기 - 4 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net 설명 다음과 같이 별을 출력해야 한다. ***** **** *** ** * Solution import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int star = scanner.nextInt(); for(int i = 0; i < star; i++) { for (int j = star - i; j < star; j+..

[자바 기초] 05. 스코프(Scope), 형변환(Casting)

변수는 선언한 위치에 따라 지역 변수, 멤버 변수(클래스 변수, 인스턴스 변수)와 같이 분류된다. 앞 게시글에서 사용했던 변수들은 모두 Local Variable(로컬 변수), 한글로 지역 변수라고 한다. 지역 변수는 이름 그대로 특정 지역에서만 사용할 수 있는 변수라는 뜻이다. 그 특정 지역을 벗어나면 사용할 수 없다. 여기서 말하는 지역이 바로 변수가 선언된 코드 블록( {} )이다. 지역 변수는 자신이 선언된 코드 블록( {} ) 안에서만 생존하고, 자신이 선언된 코드 블록을 벗어나면 제거된다. 따라서 이후에는 접근할 수 없다. 🔘 Scope란? 변수의 접근 가능한 범위를 스코프(Scope, 범위)라고 한다. 접근 범위에 따라서 스코프가 넓다 혹은 좁다라고 표현할 수 있다. Scope1(while문..

BOJ 10953번 : A+B - 6 (Python, Java/구현/Bronze 3)

10953번: A+B - 6 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 설명 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 단, A와 B는 콤마(,)로 구분되어 있다. Solution Python t = int(input()) for _ in range(t): print(sum(list(map(int, input().split(","))))) Java import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); //테스트 케이..

BOJ 10797번 : 10부제 (Python, Java/구현/Bronze 4)

10797번: 10부제 서울시는 6월 1일부터 교통 혼잡을 막기 위해서 자동차 10부제를 시행한다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 www.acmicpc.net 설명 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 것이다. 10부제를 위반하는 자동차의 대수를 출력하면 된다. 풀이 주어지는 일의 자리 숫자와 자동차 번호가 일치하는 것만 찾아서 결과를 출력하면 된다. 반복문을 통해 자동차 번호를 입력하면, 자동차 번호와 일의 자리 숫자가 같은 건 결과값에 1씩 더한다. 입력이 끝나면 결과값을 출력한다. Solution Java import java.util.*;..