본문 바로가기

자바15

[JAVA] 13주차_컬렉션 프레임워크 (Queue, Set 컬렉션, Map 컬렉션, Iterator 인터페이스와 입출력 스트림)_자바 스터디 1차시 Queue, Set 컬렉션 컬렉션 프레임워크의 구조 - 컬렉션 프레임워크는 인터페이스와 클래스로 구성 - 인터페이스는 컬렉션에서 수행할 수 있는 각종 연산을 제네릭 타입으로 정의해 유사한 클래스에 일관성 있게 접근하게 한다 - 클래스는 컬렉션 프레임워크 인터페이스를 구현한 클래스 Queue 컬렉션 (Queue 인터페이스) - 선입선출(FIFO) 방식을 지원 - 항상 순차적! /* Queue 인터페이스의 활용 코드 */ import java.util.LinkedList; //큐를 할당할 때엔 연결 리스트 선언 해서도 사용 가능 import java.util.NoSuchElementException; import java.util.Queue; public class QueueDemo { public .. 2022. 5. 28.
[JAVA] 12주차_예외 처리와 제네릭 프로그래밍 (제네릭 프로그래밍, List 컬렉션, Stack, ArrayList, LinkedList)_자바 스터디 1차시 제네릭 프로그래밍 제네릭의 개념과 필요성 - 자바는 다양한 종류의 객체를 관리하는 컬렉션이라는 자료구조를 제공 - 초기에는 모든 객체를 담을 수 있는 Object 타입의 컬렉션 사용 - Object 타입은 실행하기 전에는 클래스에 어떤 객체를 담았는지 알 수 없다는 문제점이 나타남! - 제네릭은 일반화라고 보면 됨 /* Object 타입의 컬렉션을 사용한 예시 */ //Beer 클래스 public class Beer { } //Boricha 클래스 public class Boricha { } //어떤 음료수든 담을 수 있는 Cup 클래스 public class Cup { private Object beverage; //모든 종류의 객체를 Cup 객체에 담을 수 있도록 Object 타입 사용 pub.. 2022. 5. 21.
[Algorithm][JAVA] 백준 11659번: 구간 합 구하기 4 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째.. 2022. 5. 21.
[Algorithm][JAVA] 백준 11780번: 플로이드 2 https://www.acmicpc.net/problem/11780 11780번: 플로이드 2 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 문제 n(1 ≤ n ≤ 100)개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1 ≤ m ≤ 100,000)개의 버스가 있다. 각 버스는 한 번 사용할 때 필요한 비용이 있다. 모든 도시의 쌍 (A, B)에 대해서 도시 A에서 B로 가는데 필요한 비용의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어.. 2022. 5. 21.
[JAVA] 11주차_기본 패키지(StringTokenizer 클래스, java.text 패키지, 예외 처리)_자바 스터디 1차시 StringTokenizer 클래스, java.text 패키지 StringTokenizer 클래스 - 문자열을 토큰으로 분리하는 데 사용 - 토큰(분리한 문자열)은 공백이나 줄 바꿈 등 구분자를 사용해 문자열을 분리 - 기본 구분자는 공백, 탭, 줄 바꿈, 복귀, 용지 먹임 문자 /* StringTokenizer 클래스의 활용 */ import java.util.StringTokenizer; //StringTokenizer 사용을 위해서는 import 선언 필수! public class StringTokenizerDemo { public static void main(String[] args) { String s = "of the people, by the people, for the people.. 2022. 5. 14.
[Algorithm][JAVA] 백준 1874번: 스택 수열 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수.. 2022. 5. 11.
[Algorithm][JAVA] 백준 1927번: 최소 힙 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제 널리 잘 알려진 자료구조 중 최소 힙이 있다. 최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보.. 2022. 5. 11.
[Algorithm][파이썬] 백준 17404번: RGB거리 2 https://www.acmicpc.net/problem/17404 17404번: RGB거리 2 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번, N번 집의 색과 같지 않아야 한다. N번 집의 .. 2022. 5. 9.
[JAVA] 10주차_인터페이스 구현과 타입 변환, 기본 패키지, Wrapper 클래스, java.util 패키지 (자바 스터디) 9주차 2차시 인터페이스 구현과 타입 변환 인터페이스 타입 (타입 = 형) - 인터페이스도 클래스처럼 하나의 타입이므로 변수를 인터페이스 타입으로 선언 가능 - 인터페이스의 구현 클래스는 그 인터페이스의 자식 타입 - 인터페이스 타입 변수가 구현 객체를 참조한다면 강제 타입 변환 가능 타입 변환과 다형성 interface Movable { //인터페이스 Movable void move(int x); //추상 메서드 (구현부가 없으니까!) } class Car implements Movable { //인터페이스 Movable을 구현한 Car 클래스 (Car는 구현 객체) private int pos = 0; //필드 public void move(int x) { //추상 메서드 구현 pos += x; } .. 2022. 5. 7.
[Algorithm][JAVA] 백준 11399번: ATM https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4,.. 2022. 5. 2.
[JAVA] 9주차_추상 클래스와 인터페이스, 인터페이스의 상속, 인터페이스 구현과 타입 변환 1차시 추상 클래스와 인터페이스 추상 메서드: - 메서드 본체를 완성하지 못한 메서드. 무엇을 할지는 선언할 수 있지만, 어떻게 할지는 정의할 수 없다. - 완성하지 못한 = 추상화 했다 - 굳이 구현부를 만들지 않고 상속받은 곳에서 구현하도록 한다. 추상 클래스: - 보통 하나 이상의 추상 메서드를 포함하지만 없을 수도 있다. - 주로 상속 계층에서 자식 멤버의 이름을 통일하기 위하여 사용 - 추상 클래스는 객체 생성 불가능! /* 추상 클래스와 메서드 선언 방법 */ abstract class 클래스이름 { //추상 클래스 선언 //필드 //생성자 //메서드 } absract 반환타입 메서드이름() ; //추상 메서드 선언 //추상 메서드에는 {}, 즉 메서드 구현부가 없다. /* 추상 메서드를 포함.. 2022. 5. 1.
[JAVA] 7주차_추상 클래스와 인터페이스 (접근지정자, final과 객체의 타입 변환) 1차시 접근지정자 접근 지정자의 접근 범위 접근지정자의 종류: public protected default(없음) private 1. public (공개) - 동일 패키지의 클래스, 자식 클래스 접근 가능 - 다른 패키지의 클래스, 자식 클래스 접근 가능 - 그냥 public은 공개된 접근 지정자라서 다 접근 가능 2. protected (상속 관계에서 사용) - 상속 관계라면 패키지가 다르더라도 접근 가능 - 동일 패키지의 클래스, 자식 클래스 접근 가능 - 다른 클래스의 자식 클래스 접근 가능 (상속된 거니까!) - 다른 패키지의 클래스 접근 불가능 3. default (없음) (접근지정자 생략!) - 같은 패키지에선 접근 가능 - 동일 패키지의 클래스, 동일 패키지의 자식 클래서 접근 가능 - 다른.. 2022. 4. 14.
[Algorithm][JAVA] 백준 11279번: 최대 힙 https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 문제 널리 잘 알려진 자료구조 중 최대 힙이 있다. 최대 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오. 배열에 자연수 x를 넣는다. 배열에서 가장 큰 값을 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 입력 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를.. 2022. 4. 11.
[Algorithm][JAVA] 백준 11286번: 절댓값 힙 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제 절댓값 힙은 다음과 같은 연산을 지원하는 자료구조! 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작. 입력 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다... 2022. 4. 11.
[JAVA] 4주차_정적멤버, 문자열, 배열 (this와 정적멤버, 문자열, 배열) 1차시 this와 정적멤버 this: 생성한 객체(= 인스턴스) 자신 class Square_1 { private double side; //side는 클래스 안에 선언된 멤버 필드 //설정자 public void setRadius(double s) { //매개변수 s는 멤버 필드 side를 의미하지만 변수 이름은 다름 side = s; //설정자 역할 -> 전달된 값의 정보 s가 side라는 필드 정보에 초기화 } } class Square_2 { private double side; //side는 멤버 필드 //설정자 public void setRadius(double side) { //멤버 필드와 같은 이름으로 매개변수 설정 this.side = side; //this.side는 멤버필드, side.. 2022. 3. 25.