Java8
-
2021-01-02 자바에서의 배열을 복사하는 방법은 여러 가지 있다. for이나 while 같은 반복문을 활용하여 직접 값을 하나씩 넣어주는 방법도 있고 이번 소개할 방법처럼 Arrays의 메서드를 활용하는 방법이 있다. 사용방법은 매우 간단하니 바로 코드를 살펴보자. package aArrays; import java.util.Arrays; public class copyMain { public static void main(String[] args) { int [] arr1 = {1, 2, 3, 4, 5}; int [] arr2 = Arrays.copyOf(arr1, arr1.length); //복사하고자하는 오리지널 배열 넣고, 복사하고자하는 총범위를 뒤에 넣어줌 for(int i =0; i < ..
[Java] 자바 배열복사하는 방법을 알아보자! Arrays.copyOf2021-01-02 자바에서의 배열을 복사하는 방법은 여러 가지 있다. for이나 while 같은 반복문을 활용하여 직접 값을 하나씩 넣어주는 방법도 있고 이번 소개할 방법처럼 Arrays의 메서드를 활용하는 방법이 있다. 사용방법은 매우 간단하니 바로 코드를 살펴보자. package aArrays; import java.util.Arrays; public class copyMain { public static void main(String[] args) { int [] arr1 = {1, 2, 3, 4, 5}; int [] arr2 = Arrays.copyOf(arr1, arr1.length); //복사하고자하는 오리지널 배열 넣고, 복사하고자하는 총범위를 뒤에 넣어줌 for(int i =0; i < ..
2021.01.02 -
2021-01-01 문제 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M= (location - (basketSize - 1)) && arr[i] location) { count += 1; location += 1; //사과의 위치가 현재위치보다 크면 한칸 움직이고 움직인 거리도 하나 더해줌 }else { count += 1; location -= 1; //사과의 위치가 현재위치보다 작으면 한칸 움직이고 움직인 거리도 하나 더해줌 } } } } System.out.println(count); } } 출처링크 :www.acmicpc.net/problem/2828 2828번: 사과 담기 게임 상근이는 오락실에..
백준 BaekJoon 2828번: 사과 담기 게임 [Java]2021-01-01 문제 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M= (location - (basketSize - 1)) && arr[i] location) { count += 1; location += 1; //사과의 위치가 현재위치보다 크면 한칸 움직이고 움직인 거리도 하나 더해줌 }else { count += 1; location -= 1; //사과의 위치가 현재위치보다 작으면 한칸 움직이고 움직인 거리도 하나 더해줌 } } } } System.out.println(count); } } 출처링크 :www.acmicpc.net/problem/2828 2828번: 사과 담기 게임 상근이는 오락실에..
2021.01.01 -
2020-12-31 오늘은 자바의 예외 중에 모든 개발자들이 가장 두려워하는 NullPointerException에 대하여 알아보도록 하자. 해당 예외가 발생하는 경우는 실제 값이 아닌 null(아무것도 아닌 값)을 가지고 있는 객체 / 변수 등을 호출할 경우 발생하게 되는데, 구체적으로 예를 들어 살펴보도록 하자. package eException; public class main { public static void main(String[] args) { String str = null; System.out.println(str.toString()); //str은 null값을 가지고 있어 String 객체가 아니기 때문에 해당 코드 실행시 NullPointerException 이 발생한다. } } 위..
[Java] 자바 NullPointerException과 처리방법 알아보기!2020-12-31 오늘은 자바의 예외 중에 모든 개발자들이 가장 두려워하는 NullPointerException에 대하여 알아보도록 하자. 해당 예외가 발생하는 경우는 실제 값이 아닌 null(아무것도 아닌 값)을 가지고 있는 객체 / 변수 등을 호출할 경우 발생하게 되는데, 구체적으로 예를 들어 살펴보도록 하자. package eException; public class main { public static void main(String[] args) { String str = null; System.out.println(str.toString()); //str은 null값을 가지고 있어 String 객체가 아니기 때문에 해당 코드 실행시 NullPointerException 이 발생한다. } } 위..
2020.12.31 -
2020-12-30 문제 민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB 이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다. 폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 500이다. 출력 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. import java.util.Scanner; public class TemplateA { public static void main(String[] args){ Scanner scan = new Scanner(Sy..
백준 BaekJoon 1343번: 폴리오미노 [Java]2020-12-30 문제 민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB 이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다. 폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 500이다. 출력 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. import java.util.Scanner; public class TemplateA { public static void main(String[] args){ Scanner scan = new Scanner(Sy..
2020.12.30 -
2020-12-29 인터페이스의 경우 구현 클래스를 따로 구현하여 사용하는 것이 일반적이다. 하지만 일회성으로 사용할 경우가 생긴다면, 일일이 클래스를 따로 구현해서 인터페이스를 사용하는 것은 비효율 적일 것이다. 때문에 실행(main) 클래스에서 직접 오버 라이딩하여 사용하는 방법이 있는데 이를 익명 구현 객체라고 한다. 이제 사용법을 알아보도록 하자. package interface_Lambda; public interface human { void name(); void age(); } human 인터페이스는 name / age 두가지 추상 메서드가 있으며, 이제 실행 클래스로 가서 구현하여 사용해보도록 하자. package interface_Lambda; import java.time.LocalD..
[Java] 인터페이스 익명 구현 객체를 알아보자! Interface2020-12-29 인터페이스의 경우 구현 클래스를 따로 구현하여 사용하는 것이 일반적이다. 하지만 일회성으로 사용할 경우가 생긴다면, 일일이 클래스를 따로 구현해서 인터페이스를 사용하는 것은 비효율 적일 것이다. 때문에 실행(main) 클래스에서 직접 오버 라이딩하여 사용하는 방법이 있는데 이를 익명 구현 객체라고 한다. 이제 사용법을 알아보도록 하자. package interface_Lambda; public interface human { void name(); void age(); } human 인터페이스는 name / age 두가지 추상 메서드가 있으며, 이제 실행 클래스로 가서 구현하여 사용해보도록 하자. package interface_Lambda; import java.time.LocalD..
2020.12.29 -
2020-12-28 Function 인터페이스는 apply 메서드를 가지고 있으면 매개 값과 리턴 값 모두를 가지고 있다. apply 메서드는 매개 값을 리턴 값으로 맵핑하는 역할을 하게 된다. 그러면 구체적인 사용법을 알아보도록 하자. 아래는 매개값으로 사용할 human 클래스이다. package LambdaFunction; public class human { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int ..
[Java] 람다식 Function에 대하여 알아보자!2020-12-28 Function 인터페이스는 apply 메서드를 가지고 있으면 매개 값과 리턴 값 모두를 가지고 있다. apply 메서드는 매개 값을 리턴 값으로 맵핑하는 역할을 하게 된다. 그러면 구체적인 사용법을 알아보도록 하자. 아래는 매개값으로 사용할 human 클래스이다. package LambdaFunction; public class human { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int ..
2020.12.28 -
2020-12-27 오늘은 Object 클래스의 속하는 compare 메서드와 Comparator 인터페이스를 알아보도록 하자. 우선 Comparator는 Object의 compare을 재정의해야 사용할 수 있다. 즉 개발자가 원하는 기준으로 데이터를 오버 라이딩을 통해 자유롭게 비교할 수 있도록 도와준다. 우선 Comparator의 구현클래스를 하나 만들어 주었다. package tObject; import java.util.Comparator; public class compare implements Comparator{ private int num; public void setNum(int num) { this.num = num; } public int getNum() { return num; } ..
[Java] Comparator/ compare 에 대하여 알아보자!2020-12-27 오늘은 Object 클래스의 속하는 compare 메서드와 Comparator 인터페이스를 알아보도록 하자. 우선 Comparator는 Object의 compare을 재정의해야 사용할 수 있다. 즉 개발자가 원하는 기준으로 데이터를 오버 라이딩을 통해 자유롭게 비교할 수 있도록 도와준다. 우선 Comparator의 구현클래스를 하나 만들어 주었다. package tObject; import java.util.Comparator; public class compare implements Comparator{ private int num; public void setNum(int num) { this.num = num; } public int getNum() { return num; } ..
2020.12.27 -
2020-12-26 문제 메이플스토리 뉴비 키파가 드디어 레벨 200을 달성하고 5차 전직이라는 시스템을 이용해 캐릭터를 더욱 강력하게 만들려고 합니다. 5차 전직을 하려면 먼저 퀘스트를 통해 아케인스톤이라는 아이템을 받아야 합니다. 아케인스톤을 활성화시키면 캐릭터가 얻는 경험치를 아케인스톤에 모을 수 있습니다. 5차 전직을 하기 위해서는 총 n개의 퀘스트를 진행해서 n개의 아케인스톤을 받아야 하며, 각각의 아케인스톤에 5억 이상의 경험치를 모으면 5차 전직을 진행할 수 있는 자격이 주어집니다. i번째 퀘스트를 진행하면 ai의 경험치와 i번째 아케인스톤이 주어집니다. 퀘스트로 얻는 경험치도 사냥으로 얻는 것과 똑같은 경험치이기 때문에, i번째 퀘스트의 보상 경험치를 받을 때 활성화되어 있던 아케인스톤에는..
백준 BaekJoon 16112번: 5차 전직 [Java]2020-12-26 문제 메이플스토리 뉴비 키파가 드디어 레벨 200을 달성하고 5차 전직이라는 시스템을 이용해 캐릭터를 더욱 강력하게 만들려고 합니다. 5차 전직을 하려면 먼저 퀘스트를 통해 아케인스톤이라는 아이템을 받아야 합니다. 아케인스톤을 활성화시키면 캐릭터가 얻는 경험치를 아케인스톤에 모을 수 있습니다. 5차 전직을 하기 위해서는 총 n개의 퀘스트를 진행해서 n개의 아케인스톤을 받아야 하며, 각각의 아케인스톤에 5억 이상의 경험치를 모으면 5차 전직을 진행할 수 있는 자격이 주어집니다. i번째 퀘스트를 진행하면 ai의 경험치와 i번째 아케인스톤이 주어집니다. 퀘스트로 얻는 경험치도 사냥으로 얻는 것과 똑같은 경험치이기 때문에, i번째 퀘스트의 보상 경험치를 받을 때 활성화되어 있던 아케인스톤에는..
2020.12.26 -
2020-12-25 우선 Map이란 컬렉션은 key와 value를(key와 value는 모두 객체이다.) 구성된 entry 객체를 저장하는 자료구조이다. 예를 들자면 [ Map map =... ]와 같은 코드가 작성되어 있다면 Map이라는 컬렉션에 키는 String이며, 값으로 Integer 타입의 객체가 들어가고 변수의 이름은 map이라고 해석할 수 있다. 그중에서 HashMap은 Map 컬렉션을 구현하는 대표적 인터페이스이다. 다만 HashMap은 hashcode와 equals 메서드를 재정의 하여 동등 객체의 처리 조건을 재정의 해야 한다. 그러면 사용법을 알아보자. package mMap; import java.util.HashMap; import java.util.Iterator; import ..
[Java] HashMap (컬렉션)인터페이스를 알아보자!2020-12-25 우선 Map이란 컬렉션은 key와 value를(key와 value는 모두 객체이다.) 구성된 entry 객체를 저장하는 자료구조이다. 예를 들자면 [ Map map =... ]와 같은 코드가 작성되어 있다면 Map이라는 컬렉션에 키는 String이며, 값으로 Integer 타입의 객체가 들어가고 변수의 이름은 map이라고 해석할 수 있다. 그중에서 HashMap은 Map 컬렉션을 구현하는 대표적 인터페이스이다. 다만 HashMap은 hashcode와 equals 메서드를 재정의 하여 동등 객체의 처리 조건을 재정의 해야 한다. 그러면 사용법을 알아보자. package mMap; import java.util.HashMap; import java.util.Iterator; import ..
2020.12.25 -
2020-12-24 문제 0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오. 행렬을 변환하는 연산은 어떤 3*3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 -> 1, 1 -> 0) 입력 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. 출력 첫째 줄에 문제의 정답을 출력한다. 만약 A를 B로 바꿀 수 없다면 -1을 출력한다. import java.io.BufferedReader; import java.io.IOException; import java.io.Inp..
백준 BaekJoon 1080번: 행렬 [Java]2020-12-24 문제 0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오. 행렬을 변환하는 연산은 어떤 3*3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 -> 1, 1 -> 0) 입력 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. 출력 첫째 줄에 문제의 정답을 출력한다. 만약 A를 B로 바꿀 수 없다면 -1을 출력한다. import java.io.BufferedReader; import java.io.IOException; import java.io.Inp..
2020.12.24 -
2020-12-23 ArrayList와 LinkedList는 언뜻 보기에는 인덱스를 이용해 객체를 저장하여 서로 비슷해 보인다. 하지만 두 list클래스들의 장단점은 명확하다. 오늘은 이 둘의 장단점을 알아보도록 하자. 구체적인 예를 들어 살펴보겠다. 우선 ArrayList의 경우 아래와 같이 처음에 6개의 객체가 있다고 가정해보자. 인덱스는 그러면 0부터 5번까지 객체가 들어 있을 것이다. 근데 아래 이미지와 같이 1번째의 객체가 remove() 메서드 (list.remove(1))를 통해서 제거가 된다면, 해당 제거된 인덱스 뒤에 위치한 객체들이 하나씩 앞으로 당겨져 온다. 그 결과 리스트의 사이즈는 5가 될 것이며, 인덱스 번호는 0 ~ 4번으로 변경되게 된다. 때문에 순서대로 객체를 추가하거나, ..
[Java] ArrayList 와 LinkedList 차이점과 속도 비교해보기!2020-12-23 ArrayList와 LinkedList는 언뜻 보기에는 인덱스를 이용해 객체를 저장하여 서로 비슷해 보인다. 하지만 두 list클래스들의 장단점은 명확하다. 오늘은 이 둘의 장단점을 알아보도록 하자. 구체적인 예를 들어 살펴보겠다. 우선 ArrayList의 경우 아래와 같이 처음에 6개의 객체가 있다고 가정해보자. 인덱스는 그러면 0부터 5번까지 객체가 들어 있을 것이다. 근데 아래 이미지와 같이 1번째의 객체가 remove() 메서드 (list.remove(1))를 통해서 제거가 된다면, 해당 제거된 인덱스 뒤에 위치한 객체들이 하나씩 앞으로 당겨져 온다. 그 결과 리스트의 사이즈는 5가 될 것이며, 인덱스 번호는 0 ~ 4번으로 변경되게 된다. 때문에 순서대로 객체를 추가하거나, ..
2020.12.23 -
2020-12-22 기존에 Consumer와 Supplier 인터페이스는 매개 값만 있고 리턴 값은 없거나 매개 값은 없고 리턴 값만 있는 경우였다. 하지만 Operator의 경우 매개변수를 받으면서 동시에 리턴값도 가지고 있는 인터페이스다. 구체적인 사용법을 알아보자. 가장 기초적인 int형 Operator인 inIntBinaryOperator를 활용해 구체적인 예를 작성하였다. 코드는 아래와 같다. package LambdaOperator; import java.util.function.IntBinaryOperator; public class main { private static int[] scores = {60, 70, 80}; public static int check (IntBinaryOper..
[Java] 자바 Lambda(람다)식과 Operator알아보기!2020-12-22 기존에 Consumer와 Supplier 인터페이스는 매개 값만 있고 리턴 값은 없거나 매개 값은 없고 리턴 값만 있는 경우였다. 하지만 Operator의 경우 매개변수를 받으면서 동시에 리턴값도 가지고 있는 인터페이스다. 구체적인 사용법을 알아보자. 가장 기초적인 int형 Operator인 inIntBinaryOperator를 활용해 구체적인 예를 작성하였다. 코드는 아래와 같다. package LambdaOperator; import java.util.function.IntBinaryOperator; public class main { private static int[] scores = {60, 70, 80}; public static int check (IntBinaryOper..
2020.12.22 -
2020-12-21 우선 Consumer의 함수적 인터페이스를 알아보자. 이름에서도 느껴지듯이 매개 값을 받아 소비만 하고 리턴 값을 가지지 않는다. 이러한 매개 값을 받는 메서드로는 accept ()를 가지고 있으며, 사용법은 아래와 같다. package LambdaConsumer; import java.util.function.BiConsumer; import java.util.function.Consumer; public class main { public static void main(String[] args) { Consumer consumer = t ->{ System.out.println(t +"이다."); }; //매개값만 받고 리턴값은 없는 인터페이스 consumer.accept("kin..
[Java] 자바 Lambda(람다) Consumer / Supplier 인터페이스2020-12-21 우선 Consumer의 함수적 인터페이스를 알아보자. 이름에서도 느껴지듯이 매개 값을 받아 소비만 하고 리턴 값을 가지지 않는다. 이러한 매개 값을 받는 메서드로는 accept ()를 가지고 있으며, 사용법은 아래와 같다. package LambdaConsumer; import java.util.function.BiConsumer; import java.util.function.Consumer; public class main { public static void main(String[] args) { Consumer consumer = t ->{ System.out.println(t +"이다."); }; //매개값만 받고 리턴값은 없는 인터페이스 consumer.accept("kin..
2020.12.21 -
2020-12-19 문제 언제나 최고만을 지향하는 굴지의 대기업 진영 주식회사가 신규 사원 채용을 실시한다. 인재 선발 시험은 1차 서류심사와 2차 면접시험으로 이루어진다. 최고만을 지향한다는 기업의 이념에 따라 그들은 최고의 인재들만을 사원으로 선발하고 싶어 한다. 그래서 진영 주식회사는, 다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다. 즉, 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다. 이러한 조건을 만족시키면서, 진영 주식회사가 이번 신규 사원 채용에서 선발할 수 있는 신입사원의 최대 인원수를 구하는 프로그램을 작성하..
백준 BaekJoon 1946번: 신입 사원 [Java]2020-12-19 문제 언제나 최고만을 지향하는 굴지의 대기업 진영 주식회사가 신규 사원 채용을 실시한다. 인재 선발 시험은 1차 서류심사와 2차 면접시험으로 이루어진다. 최고만을 지향한다는 기업의 이념에 따라 그들은 최고의 인재들만을 사원으로 선발하고 싶어 한다. 그래서 진영 주식회사는, 다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다. 즉, 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다. 이러한 조건을 만족시키면서, 진영 주식회사가 이번 신규 사원 채용에서 선발할 수 있는 신입사원의 최대 인원수를 구하는 프로그램을 작성하..
2020.12.19 -
2020-12-18 자바를 처음 공부하다 보면, 누구나 한 번쯤 주사위 확률 예제를 봤을 것이다. 이 경우 Math 클래스의 random();이라는 메서드를 사용해서 0 ~ 1의 난수를 얻어 이후 정수를 더해 Integer값을 얻어 냈을 것이다. 그렇다면 double 난수가 아닌 int / long /float와 같은 난수뿐 아니라, boolean 난수를 얻으려면 어떻게 해야 할까? 바로 Random클래스를 사용하면 이와 같은 문제를 쉽게 해결할 수 있다. 아래의 예제를 살펴보자. package tRandom; import java.util.Random; public class main { public static void main(String[] args) { Random ran = new Random..
[Java] 자바 Random(랜덤) 클래스 쉽게 알아보기! 난수만들기2020-12-18 자바를 처음 공부하다 보면, 누구나 한 번쯤 주사위 확률 예제를 봤을 것이다. 이 경우 Math 클래스의 random();이라는 메서드를 사용해서 0 ~ 1의 난수를 얻어 이후 정수를 더해 Integer값을 얻어 냈을 것이다. 그렇다면 double 난수가 아닌 int / long /float와 같은 난수뿐 아니라, boolean 난수를 얻으려면 어떻게 해야 할까? 바로 Random클래스를 사용하면 이와 같은 문제를 쉽게 해결할 수 있다. 아래의 예제를 살펴보자. package tRandom; import java.util.Random; public class main { public static void main(String[] args) { Random ran = new Random..
2020.12.18 -
2020-12-17 문제 정휘는 애니메이션계의 영원한 명작이자 최고의 흥행작 겨울왕국 2를 자그마치 싱어롱으로 관람하려고 한다! 겨울왕국에 등장하는 캐릭터 중 엘사를 너무 좋아하는 정휘는 L4, 즉 L열의 네 번째 자리에 앉으려고 한다. 그러나 정휘가 가려는 영화관은 좌석 번호가 자연수 하나로 표현되기 때문에 예매를 하기가 힘들다. 정휘가 겨울왕국을 관람하는 영화관은 세로로 N칸, 가로로 M칸인 좌석들로 구성되어 있다. 좌석의 번호는 좌상단 끝에 있는 A열의 첫 번째 자리부터 1번으로 시작하여 오른쪽으로 번호가 하나씩 증가하다가 끝에 다다르면 B열의 첫 번째 자리부터 또 오른쪽으로, C열의 첫 번째 자리부터 또 오른쪽으로 진행하는 것을 반복하면서 숫자가 증가해 나간다. 정휘가 좌석 L4를 빠르게 선점하여..
백준 BaekJoon 18247번: 겨울왕국 티켓 예매 [Java] 자바2020-12-17 문제 정휘는 애니메이션계의 영원한 명작이자 최고의 흥행작 겨울왕국 2를 자그마치 싱어롱으로 관람하려고 한다! 겨울왕국에 등장하는 캐릭터 중 엘사를 너무 좋아하는 정휘는 L4, 즉 L열의 네 번째 자리에 앉으려고 한다. 그러나 정휘가 가려는 영화관은 좌석 번호가 자연수 하나로 표현되기 때문에 예매를 하기가 힘들다. 정휘가 겨울왕국을 관람하는 영화관은 세로로 N칸, 가로로 M칸인 좌석들로 구성되어 있다. 좌석의 번호는 좌상단 끝에 있는 A열의 첫 번째 자리부터 1번으로 시작하여 오른쪽으로 번호가 하나씩 증가하다가 끝에 다다르면 B열의 첫 번째 자리부터 또 오른쪽으로, C열의 첫 번째 자리부터 또 오른쪽으로 진행하는 것을 반복하면서 숫자가 증가해 나간다. 정휘가 좌석 L4를 빠르게 선점하여..
2020.12.17 -
2020-12-15 문제 회의가 끝났고, 이제 악수를 하는 시간이다. 모든 사람은 직사각형 탁자 하나의 한 면에 앉아있다. 자리를 벗어나지 않고 악수를 하는 방법의 수는 총 몇 가지일까? 각 사람들은 자신의 왼쪽이나 오른쪽에 있는 사람들과 악수를 할 수 있다. (안 할 수도 있다) 입력 첫째 줄에 회의에 참석한 사람의 수 n (1 ≤ n ≤ 10,000,000)이 주어진다. 출력 첫째 줄에 악수를 하는 방법의 수를 출력한다. 수가 매우 커질 수 있기 때문에, 마지막 자리만 출력한다. n=4인 경우에는 5가지 방법이 있다. import java.util.Scanner; public class TemplateA { public static void main(String[] args) { //피보나치 수열 문..
백준 BaekJoon 8394번: 악수 [Java] 자바2020-12-15 문제 회의가 끝났고, 이제 악수를 하는 시간이다. 모든 사람은 직사각형 탁자 하나의 한 면에 앉아있다. 자리를 벗어나지 않고 악수를 하는 방법의 수는 총 몇 가지일까? 각 사람들은 자신의 왼쪽이나 오른쪽에 있는 사람들과 악수를 할 수 있다. (안 할 수도 있다) 입력 첫째 줄에 회의에 참석한 사람의 수 n (1 ≤ n ≤ 10,000,000)이 주어진다. 출력 첫째 줄에 악수를 하는 방법의 수를 출력한다. 수가 매우 커질 수 있기 때문에, 마지막 자리만 출력한다. n=4인 경우에는 5가지 방법이 있다. import java.util.Scanner; public class TemplateA { public static void main(String[] args) { //피보나치 수열 문..
2020.12.15 -
2020-12-14 StringBuilder는 문자열을 버퍼에 담에 그 안에서 추가 수정 삭제 작업을 할 수 있도록 도와주는 클래스이다. 하지만 이와 같은 클래스가 왜 필요한지 궁금할 수가 있다. 아래의 예제 코드를 가지고 왜 필요한지 이야기해보자. String str = "ABC"; str += "D"; 몇몇의 사람들은 위의 코드와 같이 따로 StringBuilder를 사용하지 않고 기존 String 변수에 새로운 값을 넣어주면 쉽게 해당 문자열을 변경할 수 있는 거 아닌가 라고 생각할 수 있다. 물론 해당 방법으로도 문자열을 수정할 수 있지만, 여기에는 큰 단점이 있다. 바로 String은 연산과 같은 과정을 통해 새로운 문자열로 변경될 경우 새로운 스트링 객체로 리턴이 된다는 것이다. 이러한 문제는..
[Java] 자바 StringBuilder 문자열 클래스 알아보자! (append,insert...)2020-12-14 StringBuilder는 문자열을 버퍼에 담에 그 안에서 추가 수정 삭제 작업을 할 수 있도록 도와주는 클래스이다. 하지만 이와 같은 클래스가 왜 필요한지 궁금할 수가 있다. 아래의 예제 코드를 가지고 왜 필요한지 이야기해보자. String str = "ABC"; str += "D"; 몇몇의 사람들은 위의 코드와 같이 따로 StringBuilder를 사용하지 않고 기존 String 변수에 새로운 값을 넣어주면 쉽게 해당 문자열을 변경할 수 있는 거 아닌가 라고 생각할 수 있다. 물론 해당 방법으로도 문자열을 수정할 수 있지만, 여기에는 큰 단점이 있다. 바로 String은 연산과 같은 과정을 통해 새로운 문자열로 변경될 경우 새로운 스트링 객체로 리턴이 된다는 것이다. 이러한 문제는..
2020.12.14 -
2020-12-13 문제 2015, 2016년에 이어 2017년에도 연세대학교 교내 프로그래밍 경시대회가 열린다. 택희, 영훈이, 남규는 열심히 문제를 만들었고, 이에 대한 보상으로 과사로부터 사탕 N개를 받았다. N개의 사탕을 적절히 나눠 가지기 위해 토론한 결과, 아래와 같은 방식으로 사탕을 나누기로 결정하였다. 남는 사탕은 없어야 한다. 남규는 영훈이보다 2개 이상 많은 사탕을 가져야 한다. 셋 중 사탕을 0개 받는 사람은 없어야 한다. 택희가 받는 사탕의 수는 홀수개가 되어서는 안 된다. 이제 사탕을 적절히 나누어 집에 돌아가던 중, 택희는 위와 같은 규칙을 만족하도록 세 명에게 사탕을 나누어 주는 방법의 수가 궁금해졌다. 사탕의 개수 N이 주어지면, 사탕을 세 사람에게 분배하는 서로 다른 경우의..
백준 BaekJoon 14568번: 2017 연세대학교 프로그래밍 경시대회 [Java] 자바2020-12-13 문제 2015, 2016년에 이어 2017년에도 연세대학교 교내 프로그래밍 경시대회가 열린다. 택희, 영훈이, 남규는 열심히 문제를 만들었고, 이에 대한 보상으로 과사로부터 사탕 N개를 받았다. N개의 사탕을 적절히 나눠 가지기 위해 토론한 결과, 아래와 같은 방식으로 사탕을 나누기로 결정하였다. 남는 사탕은 없어야 한다. 남규는 영훈이보다 2개 이상 많은 사탕을 가져야 한다. 셋 중 사탕을 0개 받는 사람은 없어야 한다. 택희가 받는 사탕의 수는 홀수개가 되어서는 안 된다. 이제 사탕을 적절히 나누어 집에 돌아가던 중, 택희는 위와 같은 규칙을 만족하도록 세 명에게 사탕을 나누어 주는 방법의 수가 궁금해졌다. 사탕의 개수 N이 주어지면, 사탕을 세 사람에게 분배하는 서로 다른 경우의..
2020.12.13 -
2020-12-11 toString 메서드는 Object 클래스에 속해있는 메서드이다. 기능으로는 객체의 문자정보를 "Class(이름)@16진수의 해시 코드"로 Console 창에 출력하는 기능을 가지고 있다. 위의 코드는 단순하게 Object 객체를 하나 만들고 해당 객체를 toString 메서드로 출력하는 코드로 위와 같은 결과를 얻을 수 있다. 보통은 Object 자체의 메서드로는 활용하지 않고 Date 와 같은 현재의 날짜 정보를 출력할 때나 아니면, 별개의 클래스에 Override(재정의)하여 사용하곤 한다. 아래는 구체적인 예이다. 위는 Date 타입의 객체를 생성한 후 기존에 Object 클래스와 마찬가지로 출력해보았다. 결과적으로 현재의 날짜와 시간이 정상적으로 출력되는 것을 확인할 수 있..
[Java] 자바 toString() 투스트링 문자 리턴 메서드 알아보자!2020-12-11 toString 메서드는 Object 클래스에 속해있는 메서드이다. 기능으로는 객체의 문자정보를 "Class(이름)@16진수의 해시 코드"로 Console 창에 출력하는 기능을 가지고 있다. 위의 코드는 단순하게 Object 객체를 하나 만들고 해당 객체를 toString 메서드로 출력하는 코드로 위와 같은 결과를 얻을 수 있다. 보통은 Object 자체의 메서드로는 활용하지 않고 Date 와 같은 현재의 날짜 정보를 출력할 때나 아니면, 별개의 클래스에 Override(재정의)하여 사용하곤 한다. 아래는 구체적인 예이다. 위는 Date 타입의 객체를 생성한 후 기존에 Object 클래스와 마찬가지로 출력해보았다. 결과적으로 현재의 날짜와 시간이 정상적으로 출력되는 것을 확인할 수 있..
2020.12.11