드디어 한 달 간의 공부가 끝나서 Section 1 회고를 작성하게 됐다. 한 달 동안의 내 키워드를 생각해보면 의지박약(^^..)이 아닐까 싶을 정도로 갈수록 나태해지는 내 모습이 보였다. 시작할 때만 해도 코드스테이츠 시작하면 6개월 동안 갓생 살거라고 떵떵거렸는데 학교 다닐 때랑 똑같았다. Java 기초, 컬렉션과 같이 생각하며 코드를 짤 때는 재미 있어서 새벽까지 궁둥이 딱 붙이고 있었는데, 이론적인 부분이나 실무에서 이게 어떻게 쓰이는 건지 모르는 부분들을 배울 때는 그냥 멍 때리는 감자였다 ㅎㅎ .. 아무리 온라인 수업이라도 과제나 공부량이 많으면 이런 나라도 열심히 하겠지- 싶었는데 들어가는 세션이라 그런지 이미 알고 있는 부분들이 많아서 집중이 잘 되지 않았다. 혹시나 정말 끈기 없고 나약..
Chapter 1. 스레드(Thread) 1. 프로세스(Process)와 스레드(Thread) 프로세스는 실행 중인 애플리케이션을 의미한다. 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 만큼의 메모리를 할당 받아 프로세스가 된다. 프로세스는 데이터, 컴퓨터 자원, 스레드로 구성되는데 스레드는 데이터와 애플리케이션이 확보한 자원을 활용하여 소스 코드를 실행한다. 즉, 스레드는 하나의 코드 실행 흐름이라고 볼 수 있다. 메인 스레드(Main thread) 메인 스레드는 main 메서드의 코드를 처음부터 끝까지 순차적으로 실행시키며, 코드의 끝을 만나거나 return 문을 만나면 실행을 종료한다. 메인 스레드에서 또 다른 스레드를 생성하여 실행시킨다면 해당 애플리케이션은 멀티 스레드로 동작하게 된다. ..
1. InputStream, OutputStream 스트림은 단방향으로만 데이터를 전송할 수 있기 때문에 입력과 출력을 동시에 처리하기 위해서는 각각의 스트림이 필요하다. 입출력 스트림은 어떤 대상을 다루느냐에 따라 종류가 나뉜다. File을 다룰 경우 FileInputStream/FileOutputStream을 사용하고 프로세스를 다룰 때는 PipedInputStream/PipedOutputStream을 사용한다. FileInputStream import java.io.FileInputStream; public class FileInputStreamExample { public static void main(String args[]) { try { FileInputStream fileInput = ne..
애너테이션(annotation) 소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해주는 문법 요소이다. public class ExampleClass implements ExampleInterface { @Override public void example() { } } 여기서 보이는 @Override 가 바로 애너테이션이다. 애너테이션 종류 표준 애너테이션 : JDK에 내장되어 있는 일반적인 애너테이션이다. @Override 메서드 앞에만 붙일 수 있는 애너테이션으로, 선언한 메서드가 상위 클래스의 메서드를 오버라이딩하거나 추상 메서드를 구현하는 메서드라는 것을 컴파일러에게 알려주는 역할을 한다. class SuperClass { public void example(..
문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다. 2보다 큰 짝수..
문제 인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치훈이의 전공평점을 계산해주는 프로그램을 작성해보자. 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다. 인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다. A+ 4.5 A0 4.0 B+ 3.5 B0 3.0 C+ 2.5 C0 2.0 D+ 1.5 D0 1.0 F 0.0 P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다. 과연 치훈이는 무사히 졸업할 수 있을까? 입력 20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로..
1. 열거형 (Enum) 열거형이란? 서로 연관된 상수들의 집합을 의미한다. enum Seasons {SPRING, SUMMER, FALL, WINTER} public class Main { public static void main(String[] args) { Seasons seasons = Seasons.SPRING; switch (seasons) { case SPRING: System.out.println("봄"); break; case SUMMER: System.out.println("여름"); break; case FALL: System.out.println("가을"); break; case WINTER: System.out.println("겨울"); break; } } } //출력값 봄 열거..
Chapter 1. 다형성 💡 학습 목표 - 자바 객체지향 프로그래밍에서 다형성이 가지는 의미와 장점을 이해할 수 있다. - 참조변수의 타입 변환에 대한 내용을 이해하고, 업캐스팅과 다운캐스팅의 차이를 설명할 수 있다. - instanceof 연산자를 언제 어떻게 활용할 수 있는 지 이해하고 설명할 수 있다. - 코딩 예제를 실제로 입력해보면서 다형성이 실제로 어떻게 활용되는 지 이해할 수 있다. 다형성이란 “여러 개”를 의미하는 poly와 어떤 ‘형태’ 또는 ‘실체’를 의미하는 morphism의 결합어로 하나의 객체가 여러 가지 형태를 가질 수 있는 성질을 의미한다. 자바에서 다형성이란 한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것을 의미한다. class Friend { pu..
문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 예제 입력 4 1 3 5 7 예제 출력 3 풀이 1. 판별해야 할 수를 N이라고 할 때 N%1 N%2 … N%(N-1) 확인하기 아무 생각 없이 썼던 방법으로 굉장히 비효율적이다. 그 이유는 2번에서 설명하겠다. 2. N의 제곱근까지 확인하기 서칭하기 전까지 이런 방법이 있다고 생각도 못 했다. 역시 나이가 들면서 머리도 굳는건가 ㅠ ㅠ N = A*B라고 할 때, A나 B 둘 중 하나는 무조건 N과 같거나 작기 때문에 N의 제곱근까지만 확인해보면..