본문 바로가기

Language/Java

💚 백준 2018 수들의 합 5 1. 문제 분석문제 링크1~N까지 수 중에서 연속된 합으로 N이 나올 수 있는 가짓수 구하기시간 제한 2초, 주어지는 N의 최대값 10,000,000무엇을 최적화라 말하는지 아직 모르겠어서, 이것들의 의미가 와닿지 않는다.2. 푸는 원리투포인터로 풀기연속된 수들의 합을 축척한 변수 acc를 만든다.오른쪽 포인터 b가 움직일 때마다, acc 에 b 만큼 더한다.왼쪽 포인터 a가 움직일 떄마다 acc에서 a 만큼 뺀다.특정 시점에서 acc의 값이 N과 같아졌을 경우, N이 되는 가지수를 하나 센다.문제 푸는 방법은 생각났지만, 세부적으로 a와 b를 acc에 더하는 시점, while 문을 끝내는 시점 등에서 많이 해매서, 답지를 봤다.a와 b가 현재 존재하는 index 부분은 acc에 더해진 부분이라는 것을 .. 더보기
Enum에 대하여 Enum은 열거형이라고 부른다. (영어로는 enumerated type이라 하고 이것의 줄임말이다.) Enum은 ‘요소’ 혹은 ‘멤버’ 라 불리는 명명된 값의 집합을 이루는 자료형이다. 여기서 ‘명명되다.’란 어떤 물건이나 일에 이름이 지어져 붙여지는 것을 말한다. Enum의 멤버가 되는 녀석들은 주로 어떤 물건이나 일을 식별하기 위한 상수 역할을 한다. 더보기
몰랐던 것 1. Intger 컬랙션 프레임워크를 int 배열로 바꾸기. int [] arr = map.keySet().stream().mapToInt(x->x).toArray(); maptoInt(x->x): 컬랙션 프레임 워크에는 값들을 Wrapper Class인 Integer로 다 저장 했다. 하지만 배열에 저장할려면 type이 원시타입(int, double,...) 여야 한다 해당 maptoInt는 컬랙션 프레임 워크값을 IntStream으로 바꿔준다. (IntStream 원시 타입 int에 대한 Stream 이다.) toArray(): 컬랙션을 배열로 바꿔주는 함수. (원시 타입으로 바꿀 거면, 인수도 원시 타입이어야 한다.) 2. String ArrayList를 String 배열로 바꾸는 방법 String.. 더보기
Runnable runnable도 Thread와 마찬가지로 병렬 수행을 하기 위한 것이다. 둘의 차이는 다음과 같다. Thread는 클래스이고 runnable은 인터페이스란 것이다. 단일 상속 원칙에 따라 Thread를 상속한 자식 클래스는 다른 부모 클래스를 상속하지 못하지만, runnable를 구현한 클래스는 병렬처리 기능을 쓰면서 다른 클래스나 인터페이스를 장착할 수 있다. 1. 코드 리뷰 import Chap_12.clean.CleanRunnable; public class _02_Runnable { public static void main(String[] args) { // 쓰레드를 만드는 방법 2가지 // 1. Thread 라는 클래스 상속해서 만들기 // 2, Runnable 이라는 인터페이스 구현해서 만.. 더보기
Thread 1. 용어정리 (1) 프로그램이란? 특정 작업을 수행하기 위해 만들어진 기계. (가동 안하는 상태, 죽은 상태) (2) 프로세서란? 작동하는 상태의 프로그램을 일컫는 말 (가동 중인 상태, 살아있는 상태) (3) 쓰레드란? 프로세서를 작동시키고 있는 녀석으로, 특정 작업을 수행중 (기계를 돌리고 있는 인부) (4) 프로세스란? 프로그램이 들어와 작업을 처리하는 공간. 보통 설정 안하면, 하나의 프로세스에 하나의 쓰레드만 존재한다. 프로세스에 여러 개의 쓰레드를 돌려서 프로그램들이 병렬 처리 되도록 할 수 있다. (하지만 이게 진짜로 일이 동시에 진행되는 것이 아니라, 두 가지 일이 순차적으로 처리되고 있지만, 그 둘이 스위칭 하는 게 나노미터 초로 이루어져서, 사람들 눈에는 그게 병렬 처리 하는 것처럼 .. 더보기
Throws (예외 처리 미루기) Throws 해당 매소드에서 일어날 수 있는 예외를 자체적으로 해결 안하고, 나 몰라라 하고 밖으로 던지는 명령어 매소드를 호출한 쪽에서 문제를 해결해야 한다. 책임전가하는 명령어 매소드를 호출한 쪽에서 또 throws 쓰면, 그냥 프로그램 퍼져도 책임 안 지겠다는 소리임. import java.io.FileWriter; import java.io.IOException; public class _07_Throws { public static void main(String[] args) { // 호출한 메인 매소드에서 해결하거나, 여기서도 throws로 나몰라라 하거나 // 메인 메소드에서도 throws로 던지면 그냥 문제 생기는 거 감안하고 돌리겠단 소리임. try { writeFile(); } catc.. 더보기
사용자 정의 예외 예외를 항상 throw new Exception(" 예외 발생 시 하고 싶은 말"); 로 한다면, 마지막 catch 구문에서 할 일이 너무 많다. Exception이란 특정적이지 않고 모든 걸 포괄하는 예외에 던졌기 때문에, ()안의 말이 아니면 무슨 이유 땜에 예외가 일어났는지 알기도 쉽지 않다. 따라서 우리가 직접 특정 순간에만 작동하는 예외 클래스를 만들고 그 예외 객체를 이용하여 예외 처리를 할려고 한다. public class _06_CustomException { public static void main(String[] args) { // 사용자 정의 예외 int age = 17; try { if(age < 19){ // System.out.println("만 19세 미만에게는 판매하지 않습.. 더보기
Try with Resources 1. 설명 AutoClosable이란 인터페이스를 구현한 클래스의 객체를 try구문 ()안에서 생성 했을 때를 가정한다. 해당 객체가 try catch 구문을 다 지나갔으면, try 구문이 자동으로 close 매소드를 호출하여 close의 기능을 수행하게 한다. 해당 스킬은 클래스가 AutoClosable이라는 인터페이스를 구현 해야만 쓸 수 있다. 2. 코드 리뷰 import java.io.BufferedWriter; public class _05_TryWithResources { public static void main(String[] args) { // close 구문도 예외처리가 필요해서 // try-catch-finally 구문 속에 또 try catch 구문이 들어간 걸 볼 수 있다. MyF.. 더보기