전체 글 211

[백준 1946] 신입 사원- JAVA (solved.ac - 실버 1)

https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 풀이 문제를 보았을 때 알 수 있는 힌트 문제에 적어도 하나는 다른 지원자보다 떨어지지 않기만 하면 된다고 한다. 이것을 통해 하나의 성적을 정렬 하고 1순위에 있는 다른 성적을 기준으로하여 다음 순위가 작은지 큰지 확인하면 되는 문제이다. 예를 들어 3 2 1 4 4 1 2 3 5 5 이렇게 2가지의 숫자가 있다면 한쪽을 정렬해준다. 1 4 2 3 3 2 4 1 5 5 이렇..

순열, 조합 - JAVA

알고리즘을 공부하다 기본으로 배우게 되는 순열과 조합을 간단하게 이야기하고 코드 및 정리를 하려고 적는다. 이론 순열 : 서로 다른 n개의 원소에서 r개를 중복없이 순서에 상관있게 선택하는 혹은 나열하는 것을 순열(permutation)이라고 한다 조합 : 서로 다른 n개의 원소에서 r개를 중복없이 순서에 상관없게 선택하는 혹은 나열하는 것을 조합(Combination)이라고 한다. 두개의 차이점은 순서에 상관이 있냐 없냐 정도이다. 순열은 nPr 조합은 nCr 이렇게 표현하며 n이 4이고 r이 2일경우 순열은 nPr -> 4P2 -> 4*3*2*1 / 2*1 = 4*3 =12가 된다. 조합은 nCr ->4C2 -> 4*3 / 2 = 6 이 된다. 이론은 간단하게 이야기 하고 코드로 짜면 아래와 같이 된..

소수 찾기 - 에라토스테네스의 체

알고리즘을 풀 다보면 간혹 나오는 문제중에 하나인 소수 찾기 문제가 존재 한다. 소수란? 1과 자기자신의 수만을 약수로 가지고 있는 수를 소수라고 한다. 간단하게 소수를 찾는다면 2를 뽑았다면 2의 배수를 다 제외 하고 3의 뽑았다면 3의 배수를 다 제외하는 형식으로 찾을 수 있다. 하지만 간단하게 구현한 만큼 O(n)이여서 시간초과가 나는 경우가 많이 있을 것이다. -> 이부분을 노리고 문제를 만들었을 확률이 크다. 그렇다면 O(n)보다 빠르게 소수를 만들어야하는 문제인 것! 그때 사용하는 것이 에라토스테네스의 체 이다. 나의 설명보다는 위키백과의 설명이 더 자세하게 적혀 있어서 가져왔다.. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다...

JAVA - I/O 와 XML

노드스트림 I/O와 Stream I/O 데이터의 입력(input)과 출력(output) 데이터는 한쪽에서 주고 한쪽에서 받는 구조로 되어있음. 이때 입력과 출력의 끝단: 노드(node) 두 노드를 연결하고 데이터를 전송할 수 있는 개념: 스트림(Stream) 물의 흐름이나 전기의 흐름과 같은 개념 스트림은 단방향으로만 통신이 가능하며 하나의 스트림으로 입력과 출력을 같이 처리할 수 없음. Node Stream의 종류와 naming Node stream : node에 연결되는 스트림 InputStream의 주요 메서드 read() close() 바이트 한 개씩 읽음 Buffer 만큼 씩 읽음 Reader의 주요 메서드 read() close() Buffer 만큼 씩 읽음 outputSteam write()..

Programming/Java 2022.07.31

JAVA - Exception Handling & Collection Framework

에러와 예외 어떤 원인에 의해 오동작 하거나 비정상적으로 종료되는 경우 심각도에 따른 분류 Error 메모리 부족, Stack overflow와 같은 일단 발생하면 복구할 수 없는 상황 프로그램의 비 정상적 종료를 막을 수 없음 → 디버그 Exception 읽으려는 파일이 없거나 네트워크 연결이 안되는 등 수습될 수 있는 비교적 상태가 약한 것들 프로그램 코드에 의해 수습 될 수 있는 상황 exception handling(예외 처리)란? 예외 발생시 프로그램의 비 정상 종료를 막고 정상적인 실행 상태를 유지하는 것 예외의 감지 및 예외 발생시 동작 코드 작성 필요 예외 클래스 계층 checked exception 예외에 대한 대처 코드가 없으면 컴파일이 진행되지 않음. unchecked exceptio..

Programming/Java 2022.07.31

JAVA - OOP(3)

추상클래스 추상 클래스 정의 자손 클래스에서 반드시 재정의 사용되기 때문에 조상의 구현이 무의미한 메서드 메서드의 선언부만 남기고 구현부는 세미퀄른으로 대체 구현부가 없다는 의미로 abstract키워드를 메서드 선언부에 추가 객체를 생성할 수 없는 클래스라는 의미로 클래스 선언부에 abstract를 추가한다. 추상 클래스의 특징 abstract 클래스는 상속 전용의 클래스 클래스에 구현부가 없는 메서드가 있으므로 객체를 생성할 수 없음. 하지만 상위 클래스 타입으로써 자식으로 참조할 수는 있다. 조상 클래스에서 상속 받은 abstract 메서드를 재정의 하지 않은 경우 클래스 내부에 abstract메서드가 있는 상황이므로 자식 클래스는 abstract 클래스로 선언되어야한다. 추상 클래스를 사용하는 이유..

Programming/Java 2022.07.31

JAVA - OOP(2)

oop is A.P.I.E Abstraction(추상화) 현실의 객체를 추상화해서 클래스를 구성 Polymorphism(다형성) 하나의 객체를 여러가지 타입(형)으로 참조할 수 있다. Inheritance(상속) 부모 클래스의 자산을 물려받아 자식을 정의함으로 코드의 재사용이 가능하다. Encapsulation(데이터 은닉과 보호) 데이터를 외부에 직접 노출시키지 않고 메서드를 이용하여 보호 할 수 있다. 상속 기존 클래스의 자산(멤버)를 자식 클래스에서 재사용하기 위한 것 부모의 생성자와 초기화 블록은 상속하지 않는다. 기존 클래스의 멤버를 물려 받기 때문에 코드의 절감할수있다. 부모의 코드를 변결하면 모든 자식들에게도 적용 → 유지 보수성 향상 상속의 적용 extends 키워드 사용 Object 클래..

Programming/Java 2022.07.31

JAVA - OOP(1)

객체 지향 프로그래밍(OOP) 객체란? 주체가 아닌 것,주체가 활용하는 것 객체지향 프로그래밍 주변의 많은 것들을 객체화 해서 프로그래밍 하는 것 객체지향은 객체를 많이 만드는 것을 추천한다? 객체지향 프로그래밍의 장점 블록 형태의 모듈화된 프로그래밍 신뢰성 높은 프로그래밍이 가능하다 추가/수정/삭제가 용이하다 재 사용성이 높다 현실 세계 객체, 클래스,프로그램의 객체(instance,object)의 관계 현실의 객체가 갖는 속성과 기능은 추상화(abstraction) 되어 클래스에 정의된다! 클래스는 구체화 되어 프로그램의 객체(instance,object)가 된다 프로그램의 클래스와 객체 클래스 객체를 정의해 놓은 것 즉 객체의 설계도,틀 클래스는 직접 사용할 수 없고 직접 사용되는 객체를 만들기 위..

Programming/Java 2022.07.31

JAVA - 기본, 배열, 다차원 배열

JAVA 기본 Variable(변수)란? 자료를 저장하기 위한 메모리 공간으로 타입에 따라 크기가 달라짐. 메모리 공간에 값을 할당 후 사용 type 타입이란? 데이터의 종류 기본형 미리 정해진 크기의 메모리 사이즈로 표현 변수 자체에 값 저장 참조형 크기가 미리 정해질 수 없는 데이터의 표현 변수에는 실제 값을 참조할 수 잇는 주소만 저장 기본형의 크기 논리형 boolean : true, false 정수형 byte : 8bit ⇒ -128 ~ 127 short : 16bit ⇒ -32768 ~ 32767 int : 32bit ⇒ -2147483648~2147483647 약 20억 ling : 64bit ⇒ -9223372036854775808 ~ 9223372036854775807 실수형 float :..

Programming/Java 2022.07.31

2022년 7월 회고록

7월이 벌써 한달이 지났다. 돌아보며 현재 나는 잘한부분이 있는지 못한 부분이 있는지 확인해보려고 합니다. # 삼성 교육 (SSAFY) 처음 2주 동안 스타트캠프라고 적응하는 시간을 준다. 처음에는 이걸 왜 하고있지? 싶은 생각이 들지만 아침 9시부터 6시까지 수업을 하는 느낌을 적응하는 시간인 것 같다. 온라인으로 특이한 수업을 하고, 발표를 하다보니 지친다... 뭔가 2주의 시간이 아까우면서도 준비하는 기간이니까 하면서 넘기는 느낌이였다. 이후 자바 교육을 2주만에 끝을 내었다. 2주만에 자바 교육을 끝낸다고? 쫓아갈수있을까? 걱정이 들었지만 기본 지식이 있다보니 나쁘지 않게 쫓아갔다. 앞으로 시간이 빌때마다 공부한 내용을 블로그에 작성하며 복습할 예정이다. 짧게 적더라고 잘 먹을 예정! 그래도 2주..

회고록 2022.07.30
728x90