분류 전체보기 188

[Java] 형식화 (Format)

java.text 패키지에 포함되어 있으며 숫자, 날짜, 텍스트 데이터를 일정한 형식에 맞게 표현할 수 있는 방법을 객체지향적으로 설계하여 표준화하였다. 예를 들어, 입력된 날짜에 대해서 출력할 때 원하는 형식으로 출력하기 위해서는 파싱하는 작업들이 복잡하게 진행된다. (년, 월, 일, 시, 분, 초를 각각 얻어서 정리) 이를 형식화 클래스로 쉽게 해결할 수 있다. DecimalFormat 숫자를 형식화 하는데 사용된다. 숫자 데이터를 정수, 소수점, 금액 등의 다양한 형식으로 표현할 수 있으며 텍스트 데이터를 숫자로 변환하는 것도 가능하다. 패턴을 정의하고 사용해야 한다. 패턴은 기호를 통해 작성된다. DecimalFormat은 선언과 함께 패턴을 전달하고 format() 메서드를 이용해 변환된 문자열..

Java 2021.05.19

[Algorithm] 개미 전사

문제 개미 전사는 부족한 식량을 충당하고자 메뚜기 마을의 식량창고를 몰래 공격하려고 한다. 메뚜기 마을에는 여러 개의 식량창고가 있는데 식량창고는 일직선으로 이어져 있다. 각 식량창고에는 정해진 수의 식량을 저장하고 있으며 개미 전사는 식량창고를 선택적으로 약탈하여 식량을 빼앗을 예정이다. 이때 메뚜기 정찰병들은 일직선상에 존재하는 식량창고 중에서 서로 인접한 식량창고가 공격받으면 바로 알아챌 수 있다. 따라서 개미 전사가 정찰병에게 들키지 않고 식량창고를 약탈하기 위해서 최소한 한 칸 이상 떨어진 식량창고를 약탈해야 한다. 예를 들어 식량 창고 4개가 다음과 같이 존재한다고 가정하자. { 1, 3, 1, 5 } 이때 개미 전사는 두번째 식량창고와 네번째 식량창고를 선택했을 때 최대값인 총 8개의 식량을..

Algorithm 2021.05.19

[Java] 날짜와 시간 (Calendar, Date)

Date는 날짜와 시간을 다루는 목적으로 사용된다. 하지만 Date 클래스는 날짜와 시간을 다루기에 기능이 부족했기 때문에 Calendar라는 새로운 클래스가 추가되었다. (1.8부터는 java.time 패키지로 Date와 Calendar로 부족한 기능을 개선한 새로운 클래스가 추가되었다.) Calendar는 추상 클래스이기 때문에 직접 객체를 생성할 수 없다. Calendar cal = new Calendar(); // Error Calendar cal = Calendar.getInstance(); // OK Date와 Calendar 간의 변환 // Calendar -> Date Calendar cal = Calendar.getInstance(); Date d = new Date(cal.getTime..

Java 2021.05.18

[Algorithm] 1로 만들기

문제 정수 X가 주어질 때 정수 X에 사용할 수 있는 연산은 다음과 같이 4가지이다. a. X가 5로 나누어 떨어지면 5로 나눈다. b. X가 3으로 나누어 떨어지면 3으로 나눈다. c. X가 2로 나누어 떨어지면 2로 나눈다. d. X에서 1을 뺀다. 정수 X가 주어졌을 때, 연산 4개를 적절히 사용해서 1을 만드려고 한다. 연산을 사용하는 횟수의 최소값을 출력하시오. 예를 들어 정수가 26이면 다음과 같이 계산해서 3번의 연산이 최소값이다. 1. 26 - 1 = 25 (d) 2. 25 / 5 = 5 (a) 3. 5 / 5 = 1 (a) 입력 조건 첫째 줄에 정수 X가 주어진다. 출력 조건 연산을 하는 횟수의 최소값을 출력한다. 풀이 a와 d 조건만 있다면, a가 먼저 가능한지 확인하고 안되면 d를 진..

Algorithm 2021.05.18

[Algorithm] 떡볶이 떡 만들기

문제 오늘 동빈이는 여행가신 부모님을 대신해서 떡집 일을 하기로 했다. 오늘은 떡볶이 떡을 만드는 날이다. 동빈이네 떡볶이떡은 재밌게도 떡볶이 떡의 길이가 일정하지 않다. 대신에 한 봉지 안에 들어가는 떡의 총 길이는 절단기로 잘라서 맞춰준다. 절단기에 높이 H를 지정하면 줄지어진 떡을 한번에 절단한다. 높이가 H보다 긴 떡은 H 위의 부분이 잘릴 것이고, 낮은 떡은 잘리지 않는다. 예를 들어 높이가 19, 14, 10, 17cm인 떡이 나란히 있고 절단기 높이가 15cm로 지정하면 자른 뒤 떡의 높이는 15, 14, 10, 15cm가 될 것이다. 잘린 떡의 길이는 차례대로 4, 0, 0, 2cm이다. 손님은 6cm만큼의 길이를 가져간다. 손님이 왔을 때 요청한 총 길이가 M일 때, 적어도 M만큼의 떡을..

Algorithm 2021.05.17

[Algorithm] 부품 찾기

문제 동빈이네 전자 매장에는 부품이 N개 있다. 각 부품은 정수 형태의 고유한 번호가 있다. 어느 날 손님이 M개 종류의 부품을 대량으로 구매하겠다며 당일 날 견적서를 요청했다. 동빈이는 때를 놓치지 않고 손님이 문의한 부품 M개 종류를 모두 확인해서 견적서를 작성해야 한다. 이때 가게 안에 부품이 모두 있는지 확인하는 프로그램을 작성해보자. 예를 들어, 가게의 부품이 총 5개일 때 부품 번호가 다음과 같다고 하자. N = 5 [8, 3, 7, 9, 2] 손님은 총 3개의 부품이 있는지 확인 요청했는데, 부품 번호는 다음과 같다. M = 3 [5, 7, 9] 이 때, 부품이 있으면 yes, 없으면 no를 출력한다. 입력 조건 첫번째 줄에 가게의 부품 총 개수 N이 입력된다. 두번째 줄에 가게에 있는 부품..

Algorithm 2021.05.16

[Algorithm] 두 배열의 원소 교체

문제 동빈이는 두 개의 배열 A와 B를 가지고 있다. 두 배열은 N개의 원소로 구성되어 있으며, 배열의 원소는 모두 자연수이다. 동빈이는 최대 K번의 바꿔치기 연산을 수행할 수 있는데, 바꿔치기 연산이란 배열 A에 있는 원소 하나와 배열 B에 있는 원소 하나를 골라서 두 원소를 서로 바꾸는 것을 말한다. 최종 목표는 배열 A의 모든 원소의 합이 최대가 되도록 하는 것이다. 입력 조건 첫번째 줄에 n, k가 입력된다. 두번째 줄에 배열 A의 원소, 세번째 줄에 배열 B의 원소가 입력된다. 출력 조건 최대 K번의 바꿔치기 연산을 수행하여 만들 수 있는 배열 A의 모든 원소의 합의 최대값을 출력한다. 풀이 K번의 바꿔치기 동안, 배열 A의 최소와 배열 B의 최대를 교환한다. K번 동안 만들 수 있는 배열 A의..

Algorithm 2021.05.15

[Algorithm] 성적이 낮은 순서대로 출력하기

문제 N명의 학생 정보가 있다. 학생 정보는 이름과 성적으로 구분된다. 각 학생의 이름과 성적 정보가 주어졌을 때, 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오. 입력 조건 첫번째 줄에 학생의 수 N이 입력된다. 두번째 줄부터 '이름 성적' 과 같이 입력된다. 출력 조건 성적이 낮은 순서대로 출력한다. 풀이 Student 클래스를 생성해 이름과 성적을 멤버 변수로 갖는다. 입력 되는대로 Student 클래스로 이루어진 배열을 생성한다. 그리고 성적 값에 따라 정렬하고 출력한다. import java.util.*; class Student implements Comparable { private String name; private int score; Student (String na..

Algorithm 2021.05.14

[Network] 네트워크

네트워크? 구성요소 측면 여러 호스트들, 종단 시스템(end system)들이 통신 링크(케이블), 패킷 스위치(라우터, 스위치) 등을 통하여 연결되어 이루어진 네트워크. 종단 시스템은 ISP (Internet Service Provider)를 통해서 인터넷에 접속한다. 인터넷의 구성요소 (종단 시스템, 패킷 스위치 등)은 인터넷에서 정보 송수신을 제어하는 여러 프로토콜(protocol, 규약)을 수행한다. 서비스 측면 애플리케이션에 서비스를 제공하는 인프라 구조. 프로토콜이란 무엇인가? 통신하는 둘 이상의 원격 개체가 포함된 인터넷에서의 모든 활동은 프로토콜이 제어한다. 프로토콜은 교환되는 메시지 포맷과 순서를 정의하고, 뿐만 아니라 메시지의 송수신과 다른 이벤트에 따른 행동들을 정의한다. 네트워크 가..

Anything 2021.05.13

[Algorithm] 위에서 아래로

문제 하나의 수열에는 다양한 수가 존재한다. 이러한 수는 크기에 상관없이 나열되어 있다. 이 수를 큰 수부터 작은 수의 순서로 정렬해야 한다. 수열을 내림차순으로 정렬하는 프로그램을 만드시오. 입력 조건 첫째 줄에 수열에 속한 수의 개수 n 이 주어진다. 둘째 줄부터 수열에 포함된 수 n개가 입력된다. 출력 조건 입력으로 주어진 수열이 내림차순으로 정렬된 결과를 출력한다. 풀이 입력을 배열로 받고, 배열을 내림차순으로 정렬해 하나씩 출력한다. import java.util.*; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Integer[] list ..

Algorithm 2021.05.13
반응형