자바
-
2022-11-29 1. 방법 방법은 ProcessBuilder를 사용하는 방법이다. 유틸 형식으로 분리 후 모듈 형식으로 사용하면 편하게 사용할 수 있다. 매개 변수 dir 은 쉘 스크립트가 위치하는 경로를 나타낸다. shellName(은) 말 그대로 실행시킬 쉘 스크립트의 이름을 나타낸다. 메서드 안에 변수 cdExec를 보면 리눅스 서버에서 매개변수로 주어진 dir로 경로를 옮긴 후 매개변수로 주어진 shellName으로 만들어진 쉘 스크립트를 실행하는 것을 확인할 수 있다. import java.io.BufferedReader; import java.io.InputStreamReader; import org.springframework.stereotype.Component; import lombo..
[Java] 자바 리눅스 서버 쉘 스크립트 실행하는 방법2022-11-29 1. 방법 방법은 ProcessBuilder를 사용하는 방법이다. 유틸 형식으로 분리 후 모듈 형식으로 사용하면 편하게 사용할 수 있다. 매개 변수 dir 은 쉘 스크립트가 위치하는 경로를 나타낸다. shellName(은) 말 그대로 실행시킬 쉘 스크립트의 이름을 나타낸다. 메서드 안에 변수 cdExec를 보면 리눅스 서버에서 매개변수로 주어진 dir로 경로를 옮긴 후 매개변수로 주어진 shellName으로 만들어진 쉘 스크립트를 실행하는 것을 확인할 수 있다. import java.io.BufferedReader; import java.io.InputStreamReader; import org.springframework.stereotype.Component; import lombo..
2022.11.29 -
2022-11-26 1. 방법 java time 에 존재하는 class 인 DayOfWeek 와 LocalDate를 사용하면 어렵지 않게 정해진 일자의 요일을 구할 수 있습니다. import java.time.DayOfWeek; import java.time.LocalDate; @SpringBootTest public class test2 { @Test void Test2() { String answer = ""; LocalDate date = LocalDate.of(2021, 12, 25); //연 월 일 순으로 적어준다. DayOfWeek dayOfWeek = date.getDayOfWeek(); if(dayOfWeek.getValue() == 1) { answer = "MON"; }else if (..
[Java] 주어진 날짜의 요일을 구하는 방법 DayOfWeek/LocalDate2022-11-26 1. 방법 java time 에 존재하는 class 인 DayOfWeek 와 LocalDate를 사용하면 어렵지 않게 정해진 일자의 요일을 구할 수 있습니다. import java.time.DayOfWeek; import java.time.LocalDate; @SpringBootTest public class test2 { @Test void Test2() { String answer = ""; LocalDate date = LocalDate.of(2021, 12, 25); //연 월 일 순으로 적어준다. DayOfWeek dayOfWeek = date.getDayOfWeek(); if(dayOfWeek.getValue() == 1) { answer = "MON"; }else if (..
2022.11.26 -
2022-10-03 1. 방법 @Test public void test8() { String s = "hello"; for(int i = 0; i < s.length(); i++){ StringBuilder sb = new StringBuilder(s); String subString = sb.substring(0, i); sb.delete(0,i); sb.append(subString); System.out.println(sb.toString()); } } //출력결과 //hello //elloh //llohe //lohel //ohell 위와 같은 방법을 사용하면 처음에 위치한 char를 맨뒤로 보내면서 해당 문자열을 회전 시킬 수 있다. 사실 로직은 한번씩 StringBuilder 를 초기화 시키면..
[Java] 자바 문자열 회전시키는 방법 알아보기.2022-10-03 1. 방법 @Test public void test8() { String s = "hello"; for(int i = 0; i < s.length(); i++){ StringBuilder sb = new StringBuilder(s); String subString = sb.substring(0, i); sb.delete(0,i); sb.append(subString); System.out.println(sb.toString()); } } //출력결과 //hello //elloh //llohe //lohel //ohell 위와 같은 방법을 사용하면 처음에 위치한 char를 맨뒤로 보내면서 해당 문자열을 회전 시킬 수 있다. 사실 로직은 한번씩 StringBuilder 를 초기화 시키면..
2022.10.03 -
2021-03-14 Writer은 문자열을 출력하는 최상위 스트림이다. 다만 Writer는 추상 클래스이기 때문에 new 연산자를 통한 객체 생성이 불가하다. 때문에 자식 클래스를 매개 값을 받아 객체를 생성한다. 또한 자바 내에서 바로 문자열로 스트림을 바로 읽어 들일 수 없기 때문에 스트림 기반 출력 클래스 또는 System.out을 형 변환하여 사용해야 한다. - 선언 Writer wr = new OutputStreamWriter(System.out); 위와 같이 Writer 클래스의 자식 클래스를 매개값으로 받아야지만, new 연산자를 사용한 객체 생성이 가능하다. - 실행 ( String ) package wWriter; import java.io.IOException; import java.i..
[Java] java Writer 문자 출력 스트림에 대하여 알아보기.2021-03-14 Writer은 문자열을 출력하는 최상위 스트림이다. 다만 Writer는 추상 클래스이기 때문에 new 연산자를 통한 객체 생성이 불가하다. 때문에 자식 클래스를 매개 값을 받아 객체를 생성한다. 또한 자바 내에서 바로 문자열로 스트림을 바로 읽어 들일 수 없기 때문에 스트림 기반 출력 클래스 또는 System.out을 형 변환하여 사용해야 한다. - 선언 Writer wr = new OutputStreamWriter(System.out); 위와 같이 Writer 클래스의 자식 클래스를 매개값으로 받아야지만, new 연산자를 사용한 객체 생성이 가능하다. - 실행 ( String ) package wWriter; import java.io.IOException; import java.i..
2021.03.14 -
2021-02-09 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. (출처 : 위키피디아 ) 즉 기존의 싱글 스레드가 아닌 멀티스레드를 사용하기 위해서 이와 같이 따로 스레드를 만들어주어야 하는데, 오늘은 그 방법을 알아보자. 방법 1.람다식으로 Runnable 구현하기 package Thread; public class main { public static void main(String[] args) { Thread thread1 = new Thread(()-> {..
[Java] Thread를 선언(생성) 하는 방법 알아보기.2021-02-09 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. (출처 : 위키피디아 ) 즉 기존의 싱글 스레드가 아닌 멀티스레드를 사용하기 위해서 이와 같이 따로 스레드를 만들어주어야 하는데, 오늘은 그 방법을 알아보자. 방법 1.람다식으로 Runnable 구현하기 package Thread; public class main { public static void main(String[] args) { Thread thread1 = new Thread(()-> {..
2021.02.09 -
2021-02-04 자바에서 Annotation이라는 주석과 같은 형태로 사용되는 코드가 있다. 흔히 상속 간에 메서드 재정의에서 사용되는 @Override가 대표적인 어노테이션이라고 할 수 있다. 오늘은 이 어노테이션의 선언과 엘리먼트 타입을 간단히 알아보도록 하자. 우선 선언하는 방법을 알아보도록 하자. package aAnotation; public @interface DefineAno { // interface 앞에 간단히 @를 붙여주면 어노테이션 인터페이스가 만들어진다. // anotation은 자신의 element 를 가질 수가 있다. int numEl() default 1; // int 형 element를 가지고 default 값은 1이다. String strEl(); // String 형 ..
[Java] 자바 어노테이션 Annotation 선언과 엘리먼트 타입.2021-02-04 자바에서 Annotation이라는 주석과 같은 형태로 사용되는 코드가 있다. 흔히 상속 간에 메서드 재정의에서 사용되는 @Override가 대표적인 어노테이션이라고 할 수 있다. 오늘은 이 어노테이션의 선언과 엘리먼트 타입을 간단히 알아보도록 하자. 우선 선언하는 방법을 알아보도록 하자. package aAnotation; public @interface DefineAno { // interface 앞에 간단히 @를 붙여주면 어노테이션 인터페이스가 만들어진다. // anotation은 자신의 element 를 가질 수가 있다. int numEl() default 1; // int 형 element를 가지고 default 값은 1이다. String strEl(); // String 형 ..
2021.02.04 -
2021-01-25 문제 영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다. 입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다. 맨 처음에는 딸기우유를 한 팩 마신다. 딸기우유를 한 팩 마신 후에는 초코우유를 한 팩 마신다. 초코우유를 한 팩 마신 후에는 바나나우유를 한 팩 마신다. 바나나우유를 한 팩 마신 후에는 딸기우유를 한 팩 마신다. 영학이는 우유 축제가 열리고 있는 우유거리에 왔다. 우유 거리에는 우유 가게들이 일렬로 늘어서 있다. 영학이는 우유 거리의 시작부터 끝까지 걸으면서 우유를 사먹고자 한다. 각각의 우유 가게는 딸기, 초코, 바나나 중 한 종류의 우유만을 취급한다. 각각의 우유 가게 앞에서, 영학이는 우유를 사마시거나, 사마시지 않는다. 우유거리에는 사람이 많기 때문에..
백준 BaekJoon 14720번: 우유 축제 [Java]2021-01-25 문제 영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다. 입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다. 맨 처음에는 딸기우유를 한 팩 마신다. 딸기우유를 한 팩 마신 후에는 초코우유를 한 팩 마신다. 초코우유를 한 팩 마신 후에는 바나나우유를 한 팩 마신다. 바나나우유를 한 팩 마신 후에는 딸기우유를 한 팩 마신다. 영학이는 우유 축제가 열리고 있는 우유거리에 왔다. 우유 거리에는 우유 가게들이 일렬로 늘어서 있다. 영학이는 우유 거리의 시작부터 끝까지 걸으면서 우유를 사먹고자 한다. 각각의 우유 가게는 딸기, 초코, 바나나 중 한 종류의 우유만을 취급한다. 각각의 우유 가게 앞에서, 영학이는 우유를 사마시거나, 사마시지 않는다. 우유거리에는 사람이 많기 때문에..
2021.01.25 -
2021-01-22 문자열 변수를 사용하다 보면 가끔씩 해당 문자를 대문자로 바꾸어야 하거나 소문자로 바꾸어야 하는 경우가 있다. 이러한 경우 String에서는 toUpperCase/toLowerCase 메서드를 이용해 바꿀 수 있는데, 오늘은 이와 같은 방법을 알아보자. package Upper_Lower; public class main { public static void main(String[] args) { // 입력받은 문자열을 대문자로 바꾸는 방법과 // 소문자로 바꾸는 방법을 알아보자. String name1 = "AAABBB"; String name2 = "aaabbb"; String name3 = "AaaBbb"; //대문자로만 구성되어있는 변수 name1 //소문자로만 구성되어 있는 ..
[Java] 자바 toUpperCase / toLowerCase 사용법2021-01-22 문자열 변수를 사용하다 보면 가끔씩 해당 문자를 대문자로 바꾸어야 하거나 소문자로 바꾸어야 하는 경우가 있다. 이러한 경우 String에서는 toUpperCase/toLowerCase 메서드를 이용해 바꿀 수 있는데, 오늘은 이와 같은 방법을 알아보자. package Upper_Lower; public class main { public static void main(String[] args) { // 입력받은 문자열을 대문자로 바꾸는 방법과 // 소문자로 바꾸는 방법을 알아보자. String name1 = "AAABBB"; String name2 = "aaabbb"; String name3 = "AaaBbb"; //대문자로만 구성되어있는 변수 name1 //소문자로만 구성되어 있는 ..
2021.01.22 -
2021-01-08 데몬스레드는 쉽게 말해서 주스레드의 하위 스레드라고 할 수 있다. 즉 주스레드의 보조적인 역할을 수행하게 되며, 주스레드가 종료될 경우 데몬스레드도 같이 종료되게 된다. 바로 코드로 살펴보도록 하자. 우선 Thread를 상속받는 두개의 클래스를 만들어 주었으며, 내용은 아래와 같다. package Demon; public class Thread1 extends Thread { @Override public void run() { while(true) { System.out.println("Thread1 is Running . . ."); } } } package Demon; public class Thread2 extends Thread { @Override public void ru..
[Java] 자바 데몬스레드에 대하여 알아보자! [Daemon Thread]2021-01-08 데몬스레드는 쉽게 말해서 주스레드의 하위 스레드라고 할 수 있다. 즉 주스레드의 보조적인 역할을 수행하게 되며, 주스레드가 종료될 경우 데몬스레드도 같이 종료되게 된다. 바로 코드로 살펴보도록 하자. 우선 Thread를 상속받는 두개의 클래스를 만들어 주었으며, 내용은 아래와 같다. package Demon; public class Thread1 extends Thread { @Override public void run() { while(true) { System.out.println("Thread1 is Running . . ."); } } } package Demon; public class Thread2 extends Thread { @Override public void ru..
2021.01.08 -
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-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-09 문제 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1≤N≤10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다. 예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다. N을 입력받아 가지수를 출력하는 프로그램을 작성하시오. 입력 첫 줄에 정수 N이 주어진다. 출력 입력된 자연수 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 출력하시오. import java.io.BufferedReader; import java.io.IO..
백준 BaekJoon 2018번: 수들의 합 5 [Java] 자바2020-12-09 문제 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1≤N≤10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다. 예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다. N을 입력받아 가지수를 출력하는 프로그램을 작성하시오. 입력 첫 줄에 정수 N이 주어진다. 출력 입력된 자연수 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 출력하시오. import java.io.BufferedReader; import java.io.IO..
2020.12.09 -
2020-12-03 제네릭(Generic) 은 클래스 / 인터페이스 / 메서드 등의 타입을 파라미터로 사용할 수 있게 해주는 역할을 한다. 또한 비제네릭 타입의 코드에서 발생하는 불필요한 타입 변환으로 인한 프로그램 성능의 저하를 감소시킬 수 있다는 장점도 있다. (List list = new ArrayList (); 에서 많이 봤을 바로 가 바로 제네릭 표현식이다.) 클래스에서의 제네릭 선언 방법은 아래와 같다. package Generic1; public class man { private T name; //이름 필드 private T bloodtype; //혈액형 필드 public T getName() { return name; } public void setName(T name) { this.na..
[Java] 자바 타입 제네릭(Generic) < T > 쉽게 알아보기2020-12-03 제네릭(Generic) 은 클래스 / 인터페이스 / 메서드 등의 타입을 파라미터로 사용할 수 있게 해주는 역할을 한다. 또한 비제네릭 타입의 코드에서 발생하는 불필요한 타입 변환으로 인한 프로그램 성능의 저하를 감소시킬 수 있다는 장점도 있다. (List list = new ArrayList (); 에서 많이 봤을 바로 가 바로 제네릭 표현식이다.) 클래스에서의 제네릭 선언 방법은 아래와 같다. package Generic1; public class man { private T name; //이름 필드 private T bloodtype; //혈액형 필드 public T getName() { return name; } public void setName(T name) { this.na..
2020.12.03 -
2020-11-24 오늘은 자바라는 언어의 가장 큰 특징 객체지향 중 Getter/Setter에 대하여 알아보도록 하겠다. 우선 해당 메서드를 사용하는 이유는 필드 값에 부적절한 값이 대입되는 것을 막기 위해서이다. (물론 각 객체들의 캡슐이 깨지지 않게 하기 위함도 있다.) 글로만 봐서는 이해가 어려울 수 있으니 바로 코드를 통한 예제를 보면서 이해해 보도록 하자. 예를 들어 한 명의 게임 캐릭터가 있다. 해당 캐릭터의 힘 / 민첩 / 지능을 스탯을 배분해야 하며, 스탯은 0부터 시작하기 때문에 - 값은 들어갈 수 없다고 가정해보자. 이러한 경우 실수로 - 값을 대입할 경우, 차후 캐릭터에 문제가 생겨 버그가 발생할 수 있다. 때문에 스텟(필드)은 private로 직접적인 접근을 할 수 없도록 막고, ..
[Java] 자바 Getter/Setter 메소드(Method) 알아보기[초간단]2020-11-24 오늘은 자바라는 언어의 가장 큰 특징 객체지향 중 Getter/Setter에 대하여 알아보도록 하겠다. 우선 해당 메서드를 사용하는 이유는 필드 값에 부적절한 값이 대입되는 것을 막기 위해서이다. (물론 각 객체들의 캡슐이 깨지지 않게 하기 위함도 있다.) 글로만 봐서는 이해가 어려울 수 있으니 바로 코드를 통한 예제를 보면서 이해해 보도록 하자. 예를 들어 한 명의 게임 캐릭터가 있다. 해당 캐릭터의 힘 / 민첩 / 지능을 스탯을 배분해야 하며, 스탯은 0부터 시작하기 때문에 - 값은 들어갈 수 없다고 가정해보자. 이러한 경우 실수로 - 값을 대입할 경우, 차후 캐릭터에 문제가 생겨 버그가 발생할 수 있다. 때문에 스텟(필드)은 private로 직접적인 접근을 할 수 없도록 막고, ..
2020.11.24 -
2020-11-06 문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. import java.util.Arrays; import java.util.Scanner; public class TemplateA { public static void main(String[] args) { Scanner scan = new Scanner(..
백준 BaekJoon 1157번: 단어 공부 [Java] 자바2020-11-06 문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. import java.util.Arrays; import java.util.Scanner; public class TemplateA { public static void main(String[] args) { Scanner scan = new Scanner(..
2020.11.06 -
2020-10-17 문제 선영이의 직업은 소시지 요리사이다. 소시지를 팔기 전에 음식 평론가 M명을 모아서 맛을 테스트해보려고 한다. 선영이는 동일한 소시지를 총 N개를 준비했다. 이 소시지를 모든 평론가들이 같은 양을 받게 소시지를 자르려고 한다. 이때, 소시지를 자르는 횟수를 최소로 하려고 한다. 예를 들어, 소시지가 2개, 평론가가 6명있는 경우를 생각해보자. 이때, 각 소시지를 세 조각으로 만든 다음, 각 평론가에게 한 조각씩 주면 된다. 이 경우에 소시지는 총 네 번 자르게 된다. 다른 경우로 소시지가 3개, 평론가가 4명 있는 경우를 생각해보자. 이때는 각 소시지의 크기를 3:1로 잘라서 큰 조각을 평론가에게 하나씩 주고, 남은 조각을 평론가에게 주면 모두 동일한 양을 받게 된다. 소시지의 수..
백준 BaekJoon 1188번: 음식 평론가[Java] 자바2020-10-17 문제 선영이의 직업은 소시지 요리사이다. 소시지를 팔기 전에 음식 평론가 M명을 모아서 맛을 테스트해보려고 한다. 선영이는 동일한 소시지를 총 N개를 준비했다. 이 소시지를 모든 평론가들이 같은 양을 받게 소시지를 자르려고 한다. 이때, 소시지를 자르는 횟수를 최소로 하려고 한다. 예를 들어, 소시지가 2개, 평론가가 6명있는 경우를 생각해보자. 이때, 각 소시지를 세 조각으로 만든 다음, 각 평론가에게 한 조각씩 주면 된다. 이 경우에 소시지는 총 네 번 자르게 된다. 다른 경우로 소시지가 3개, 평론가가 4명 있는 경우를 생각해보자. 이때는 각 소시지의 크기를 3:1로 잘라서 큰 조각을 평론가에게 하나씩 주고, 남은 조각을 평론가에게 주면 모두 동일한 양을 받게 된다. 소시지의 수..
2020.10.17 -
2020-10-16 문제 삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다. Equilateral : 세 변의 길이가 모두 같은 경우 Isosceles : 두 변의 길이만 같은 경우 Scalene : 세 변의 길이가 모두 다른 경우 단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다. 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다. 세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오. 입력 각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다. 출력 각 입력에 맞는 결..
백준 BaekJoon 5073번: 삼각형과 세 변[Java] 자바2020-10-16 문제 삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다. Equilateral : 세 변의 길이가 모두 같은 경우 Isosceles : 두 변의 길이만 같은 경우 Scalene : 세 변의 길이가 모두 다른 경우 단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다. 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다. 세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오. 입력 각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다. 출력 각 입력에 맞는 결..
2020.10.16 -
2020-10-13 아마 자바(java)를 하면서 가장 많이 접하게 되는 속성 두 가지를 뽑자면, String과 Int가 아닐까 생각해본다. 물론 알고리즘 문제를 접할 때도 해당 속성을 자유자재로 바꿀 줄 알아야 하는데, 오늘은 이와 같은 방법으로 알아보도록 하자. 우선 문자열 형태에서 정수형으로 바꾸는 방법을 알아보자. 방법은 간단한데, 아래와 같다. 소스코드 String str = "123"; int number = Integer.parseInt(str); System.out.println(number); 처음에는 바꾸고 싶은 문자열을 설정하고 Integer.parseInt로 형변환을 처리 후 정수형 변수에 넣어주면 간단히 String → Int 형을 바꾸어 진 것을 확인할 수 있다. 다음은 정수형에..
[Java] String에서 Int 변환 / Int에서 String 변환/ 자바속성변경2020-10-13 아마 자바(java)를 하면서 가장 많이 접하게 되는 속성 두 가지를 뽑자면, String과 Int가 아닐까 생각해본다. 물론 알고리즘 문제를 접할 때도 해당 속성을 자유자재로 바꿀 줄 알아야 하는데, 오늘은 이와 같은 방법으로 알아보도록 하자. 우선 문자열 형태에서 정수형으로 바꾸는 방법을 알아보자. 방법은 간단한데, 아래와 같다. 소스코드 String str = "123"; int number = Integer.parseInt(str); System.out.println(number); 처음에는 바꾸고 싶은 문자열을 설정하고 Integer.parseInt로 형변환을 처리 후 정수형 변수에 넣어주면 간단히 String → Int 형을 바꾸어 진 것을 확인할 수 있다. 다음은 정수형에..
2020.10.13 -
2020-10-12 문제 소수란 1과 자기 자신으로만 나누어떨어지는 수를 말한다. 예를 들면 1, 2, 3, 5, 17, 101, 10007 등이 소수이다. 이 문제에서는 편의상 1도 소수로 하자. 알파벳 대소문자로 이루어진 영어 단어가 하나 있을 때, a를 1로, b를 2로, …, z를 26으로, A를 27로, …, Z를 52로 하여 그 합을 구한다. 예를 들어 cyworld는 합을 구하면 100이 되고, abcd는 10이 된다. 이와 같이 구한 수가 소수인 경우, 그 단어를 소수 단어라고 한다. 단어가 주어졌을 때, 그 단어가 소수 단어인지 판별하는 프로그램을 작성하시오. 입력 첫째 줄에 단어가 주어진다. 단어의 길이는 20자 이하이다. 주어지는 단어는 알파벳 소문자와 대문자만으로 이루어져 있다. 출..
백준 BaekJoon 2153번: 소수 단어[Java] 자바2020-10-12 문제 소수란 1과 자기 자신으로만 나누어떨어지는 수를 말한다. 예를 들면 1, 2, 3, 5, 17, 101, 10007 등이 소수이다. 이 문제에서는 편의상 1도 소수로 하자. 알파벳 대소문자로 이루어진 영어 단어가 하나 있을 때, a를 1로, b를 2로, …, z를 26으로, A를 27로, …, Z를 52로 하여 그 합을 구한다. 예를 들어 cyworld는 합을 구하면 100이 되고, abcd는 10이 된다. 이와 같이 구한 수가 소수인 경우, 그 단어를 소수 단어라고 한다. 단어가 주어졌을 때, 그 단어가 소수 단어인지 판별하는 프로그램을 작성하시오. 입력 첫째 줄에 단어가 주어진다. 단어의 길이는 20자 이하이다. 주어지는 단어는 알파벳 소문자와 대문자만으로 이루어져 있다. 출..
2020.10.12 -
2020-10-10 문제 두 개의 이진수를 입력받아 이를 더하는 프로그램을 작성하시오. 입력 첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다. 출력 첫째 줄에 이진수 덧셈 결과를 출력한다. 결과가 0인 경우를 제외하고는 출력되는 이진수는 항상 1로 시작해야 한다. Scanner scan = new Scanner(System.in); String N = scan.next(); String M = scan.next(); int [] sum = new int [80]; int max = N.length() >= M.length() ? N.length() : M.length(); ..
백준 BaekJoon 1252번: 이진수 덧셈[Java] 자바2020-10-10 문제 두 개의 이진수를 입력받아 이를 더하는 프로그램을 작성하시오. 입력 첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다. 출력 첫째 줄에 이진수 덧셈 결과를 출력한다. 결과가 0인 경우를 제외하고는 출력되는 이진수는 항상 1로 시작해야 한다. Scanner scan = new Scanner(System.in); String N = scan.next(); String M = scan.next(); int [] sum = new int [80]; int max = N.length() >= M.length() ? N.length() : M.length(); ..
2020.10.10