분류 전체보기 779

[ BOJ ][JAVA][6236] 용돈관리

https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 128 MB 5737 1861 1314 30.145% 문제 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 하였다. 현우는 통장에서 K원을 인출하며, 통장에서 뺀 돈으로 하루를 보낼 수 있으면 그대로 ..

[ BOJ ][JAVA][15658] 연산자 끼워넣기 (2)

https://www.acmicpc.net/problem/15658 15658번: 연산자 끼워넣기 (2) 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1보다 크거나 같고, 4N보다 작거나 같은 4개의 정수가 주어지는데, 차례대 www.acmicpc.net 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 512 MB 4135 2200 1801 54.100% 문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 연산자의 개..

[ Java ] 19. Java의 접근 제어자

Access Modifier 접근 제어자 변수 또는 메소드의 접근 범위를 설정해주기 위해 사용되는 JAVA의 예약어를 의미하며 총 네가지 종류가 있다. public : 어떤 클래스에서라도 접근이 가능하다. protected : 클래스가 정의되어 있는 해당 패키지 내 그리고 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능하다. (default) : 클래스가 정의되어 있는 해당 패키지 내에서만 접근이 가능하다. private : 정의된 해당 클래스에서만 접근이 가능하다. final에 대해서도 알아보자 final class : 다른 클래스에서 상속하지 못한다. final method : 다른 메소드에서 오버라이딩 하지 못한다. final variable : 변하지 않는 상수값이 되어 새로 할당할 ..

[ Java ] 18. Overriding vs Overloading

Overriding vs Overloading 둘 다 다형성을 높여주는 개념이고 비슷한 이름이지만, 전혀 다른 개념이라고 봐도 무방할 만큼 차이가 있다. (오버로딩은 다른 시그니쳐를 만든다는 관점에서 다형성으로 보지 않는 의견도 있다.) 공통점으로는 같은 이름의 다른 함수를 호출한다는 것이다. 오버라이딩 상위클래스 혹은 인터페이스에 존재하는 메소드를 하위 클래스에서 필요에 맞게 재정의하는 것을 의미한다. 자바의 경우는 오버라이딩 시 동적바인딩(Dynamic Binding)된다. ex) 아래와 같은경우 SuperClass의 fun이라는 인터페이스를 통해 SubClass의 fun이 실행된다. SuperClass object = new SubClass(); object.fun(); 오버로딩 메소드 이름과 re..

[ Java ] 17. Java Generic

Generic 위로 Generic은 자바에서 안정성을 맡고 있다고 할 수 있다. 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클레스에서 사용하는 것으로, 컴파일 과정에서 타입체크를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여준다. 자연스럽게 코드도 더 간결해진다. 예를 들면, Collection에 특정 객체만 추가될 수 있도록, 또는 특정한 클래스의 특징을 갖고 있는 경우에만 추가될 수 있도록 하는 것이 제네릭이다. 이로 인한 장점은 Collection 내부에서 들어온 값이 내가 원하는 값인지 별도의 로직 처리를 구현할 필요가 없어진다. 또한, API를 설계하는데 있어서 보다 명확한 의사전달이 가능해진다. 정리를 해보자. Generi..

[ Java ] 16. Java Annotation

Annotation Annoation이란 본래 주석이란 뜻으로, 인터페이스를 기반으로 한 문법이다. 주석과는 그 역할이 다르지만 주석처럼 코드에 달아 클래스에 특별한 의미를 부여하거나 기능을 주입할 수 있다. 또 해석되는 시점을 정할 수 있다.(Retention Policy) 어노테이션에는 크게 세 가지 종류가 존재한다. built-in annotation : JDK에 내장 되어 있음. 상속받아서 메소드를 오버라이드할 때 나타나는 @Override 어노테이션이 대표적이다. Meta annotation : 어노테이션에 대한 정보를 나타내기 위한 어노테이션 Custom annotation : 개발자가 직접 만든 어노테이션

[ BOJ ][JAVA][21313] 문어

https://www.acmicpc.net/problem/21313 21313번: 문어 문어에게 여덟개의 팔이 있다는 사실은 잘 알려져 있다. 하지만 문어들이 자신의 팔들을 1번, 2번, 3번, ..., 8번이라고 부른다는 말은 오늘 처음 들었을 것이다! 단, 시계방향으로 오름차순이라던 www.acmicpc.net 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 1024 MB 234 174 152 74.510% 문제 문어에게 여덟개의 팔이 있다는 사실은 잘 알려져 있다. 하지만 문어들이 자신의 팔들을 1번, 2번, 3번, ..., 8번이라고 부른다는 말은 오늘 처음 들었을 것이다! 단, 시계방향으로 오름차순이라던가 하는 규칙은 없다. (물론 그러한 문어도 존재할 수 있다.) 문제에선 편의상..

[ Java ] 15. Java에서의 Stream

Stream JAVA 8 이상부터 Stream API를 지원합니다. JAVA에서도 8버전 이상부터 람다를 사용한 함수형 프로그래밍이 가능해졌습니다. 기존에 존재하던 Collection과 Stream은 무슨 차이가 있을까요? => 바로 데이터 계산 시점 입니다. Collection 모든 값을 메모리에 저장하는 자료구조. 따라서, Collection에 추가하기 전에 미리 계산이 완료되어 있어야 합니다. 외부 반복을 통해 사용자가 직접 반복 작업을 거쳐 요소를 가져올 수 있습니다. (for-each) Stream 요청할 때만 요소를 계산합니다. 내부 반복을 사용하므로 추출 요소만 선언해주면 알아서 반복 처리를 진행한다. 스트림에 요소를 따로 추가 혹은 제거하는 작업은 불가능하다. Collections은 핸드폰..

[ Java ] 14. 프로그램 오류 (Error & Exception)

Error & Exception Error와 Exception의 차이점에 대해 설명하라 어떻게 Exception Handling을 할 것인가 Error와 Exception은 같다고 생각할 수 있지만 사실 큰 차이가 있습니다. Error는 컴파일 시 문법적인 오류와 런타임 시 널포인트 참조와 같은 오류로 프로세스에 심각한 문제를 야기시켜 프로세스를 종료시킬 수 있습니다. Exception은 컴퓨터 시스템의 동작 도중 예기치 않았던 이상 상태가 발생하여 수행중인 프로그램이 영향을 받는 것으로 예를 들면, 연산도중 넘침에 의해 발생한 끼어들기 등이 이에 해당합니다. 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우를 프로그램 오류라 하고, 프로그램 오류에는 에러(Error)와 ..

[ Java ] 13. Java의 자료형 (Primitive type & Reference type)

Primitive type & Reference type Primitive type에 대해 설명하라 Reference type에 대해 설명하라 자바에는 기본형(Privitive type)과 참조형(Reference type)이 있다. 일반적으로 다음처럼 분류가 된다. Java Data Type ㄴ Primitive Type ㄴ Boolean Type(boolean) ㄴ Numeric Type ㄴ Integral Type ㄴ Integer Type(short, int, long) ㄴ Floating Point Type(float, double) ㄴ Character Type(char) ㄴ Reference Type ㄴ Class Type ㄴ Interface Type ㄴ Array Type ㄴ Enum T..

[ Java ] 12. Java의 형변환 (2)

Promotion & Casting Promotion에 대해 설명하라. Casting에 대해 설명하라. 형변환할 때 발생할 수 있는 에러에 대해 설명하라. 데이터 타입 형변환 (타입 변환) Java에서 연산은 "2(byte 데이터 타입) + 3(byte 데이터 타입)" 과 같이 동일한 데이터 타입에서 가능합니다. 하지만, 프로그램을 만들다 보면 "2(byte 데이터 타입) + 3.5(double 데이터 타입)"과 같이 서로 다른 데이터 타입끼리의 연산이 필요할 때가 있습니다. 이럴 경우 변수의 데이터 타입을 바꿔주는 작업이 필요한데, 이것이 데이터 타입의 형변환(타입 변환)입니다. 이러한 형변환(타입변환)에는 크게 자동 형변환(Promotion)과 강제 형변환(Casting)이 있습니다. 또 다른 말로 ..

[ Java ] 11. Garbage Collection에 관해

Garbage Collection Garbage Collection의 역할에 대해 설명하라 Garabage Collection의 메모리 해제 과정을 3단계로 설명하라 Generational Garbage Collections에 대해 설명하라 Generational Garbage Collection 과정에 대해 설명하라 Minor GC와 Major GC의 차이점에 대해 설명하라 C/C++ 프로그래밍을 할 때 메모리 누수(Memory Leak)를 막기 위해 객체를 생성한 후 사용하지 않는 객체의 메모리를 프로그래머가 직접 해제해야 했습니다. 하지만 JAVA에서는 JVM(Java Virtual Machine)이 구성된 JRE(Java Runtime Environment)가 제공되며, 그 구성 요소 중 하나인 ..

[ Java ] 10. Intrinsic Lock

Intrinsic Lock 위로 고유 락 = monitor lock = monitor 자바의 모든 객체는 lock을 갖고 있따. Synchronized 블록은 Intrinsic Lock을 이용해서 Thread의 접근을 제어한다. public class Counter { private int count; public int increase() { return ++count; // Thread-Safe 하지 않은 연산 } } Q) ++count문이 atomic 연산인가? A) read (count 값을 읽음) modify (count 값 수정) write (count 값 저장) 의 과정에서 여러 Thread가 공유 자원(count)으로 접근할 수 있으므로 동시성 문제가 발생한다. 그러면 Synchronize..

[ Java ] 09. Java에서의 Thread 활용

Java에서의 Thread 활용 요즘 OS는 모두 멀티태스킹을 지원한다. 실제로 동시에 처리될 수 있는 프로세스의 개수는 CPU 코어의 개수와 동일한데, 이보다 많은 개수의 프로세스가 존재하기 때문에 모두 함께 동시에 처리할 수는 없다. 각 코어들은 아주 짧은 시간동안 여러 프로세스를 번갈아가며 처리하는 방식을 통해 동시에 동작하는 것 처럼 보이게 할 뿐인다. 이와 마찬가지로 멀티스레딩이란 하나의 프로세스 안에 여러개의 스레드가 동시에 작업을 수행하는 것을 말한다. 스레드는 하나의 작업 단위라고 생각하면 편하다. Thread 구현 자바에서의 스레드 구현방법에는 2가지가 있다. Runnable 인터페이스 구현 Thread 클래스 상속 둘다 run() 메소드를 오버라이딩 하는 방식이다 ! public cla..

[ BOJ ][JAVA][20152] Game Addiction

https://www.acmicpc.net/problem/20152 20152번: Game Addiction 첫째 줄에 집과 PC방의 좌표 (H, H), (N, N) 을 나타내는 두 정수 H, N (0 ≤ H, N ≤ 30) 이 차례로 주어진다. www.acmicpc.net 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 1024 MB 317 141 130 49.618% 문제 강산이는 심각한 게임 중독자이기 때문에 날씨에 상관없이 매일 PC방을 간다. 최근에 폭우로 인해 일부 지역이 침수되어 침수된 지역으로는 이동할 수 없게 되었다. 하지만 강산이는 출석 이벤트를 위해 하루도 빠짐없이 PC방을 가야 한다. 강산이는 PC방까지 상, 하, 좌, 우 방향으로만 이동하며, 한 번 이동할 때의 거리..