java
-
모각코 PS스터디 / 백준 2875 "대회 or 인턴"PS 2022. 5. 21. 16:43
모각코 PS스터디 왜인지 모르겠는데 PS는 하고 나서 포스팅 하는 걸 자꾸 까먹는다. 이번주 스터디 한 세 문제를 차례로 포스팅해보려고 한다. 문제와 풀이 문제 링크 : 백준 2875번 - 대회 or 인턴 👇펼쳐서 코드와 해설 읽기 그리디(greedy) 카테고리의 문제다. 팀을 만드는 데에는 여자2와 남자1이 필요하고, 인턴은 아무나 1이 필요하다. 일단 팀이 많은게 좋다고 하니까, 가능한 팀을 최대한 구성해 놓고, 그다음에 인턴갈 인원을 차출한다. 인턴 갈 사람수가 부족하면 팀을 깨야하는데, 한팀씩 깨서 부족한 만큼만 팀을 깨야 한다. 그리고 결과를 출력해주면 된다. import java.util.Scanner; public class Main { public static void main(String..
-
Java: 입출력(I/O) 스트림(Stream) 기초 개념각종 학습 요약/Java 2022. 5. 20. 14:19
입출력(I/O) 스트림(Stream) 기초 개념 데이터를 주고받는 도구인 스트림에 대한 개념을 알아봅니다. 스트림이란? 프로그램은 통신한다. 통신의 대상은 시스템이 될 수도 있고, 파일이 될 수도 있다. 무엇이 되었든, 그 대상과 데이터를 주고 받을 수 있다. 그렇게 데이터를 주고 받으려면 데이터가 오가는 길목이 필요하다. 그것이 바로 스트림이다. 주체를 기준으로 데이터가 들어오는 스트림을 Input Stream이라고 하고, 데이터를 내보내는 스트림을 Output Stream이라고 한다. Java에서의 스트림 1 - (File)Input/OutputStream Java에서 기본적인 Input/OutputStream은 바이트 단위로 데이터를 읽고 전송한다. 근데 기본 스트림대로 한 바이트 한 바이트 나르고..
-
Java: 람다와 스트림의 기본적인 이해와 사용법 - 2각종 학습 요약/Java 2022. 5. 19. 12:20
Java: 람다(lambda)와 스트림(Stream)의 기본적인 이해와 사용법 - 2 이전 글에서 람다의 아주 기초적인 형태나 개념은 익혔을 거라 생각하고, 이번 글에서는 주로 스트림을 활용하는 방법에 대해 알아보려고 한다. 주요 메서드 소개가 주가 될 것 같다. 아래 글을 따라가며 순차적으로 스트림을 열고 - 스트림 중간에 특정연산을 거쳐서 - 스트림의 결과값을 가지고 뭔가 산출해내면 된다(아래 예시처럼). 메서드 하나하나씩 써보자..! /* 예시 */ psvm { sout(func()); } int func() { return Intstream.range(1,5) /* '스트림 열기' 파트에서 하나 고르고(param은 설명보고 적당히 넣자) */ .skip(3) /* '스트림 사..
-
Java: 람다와 스트림의 기본적인 이해와 사용법 - 1각종 학습 요약/Java 2022. 5. 19. 12:19
Java: 람다(lambda)와 스트림(Stream)의 기본적인 이해와 사용법 - 1 람다에 대한 깊은 이해를 제공하는 글은 이미 많은 것 같다. 이 글은 람다를 몰랐던 사람이 람다로 익명함수를 즉시 사용해볼 수 있도록 방법을 소개하고, 사용하기 위한 아주 기본적인 이해를 위한 글이다. 람다 사용 한 줄 요약 메서드 시그니처에서 파라미터만 남기고, 화살표를 넣자. 리턴도 생략 가능. (경우에 따라 더 줄이는 것도 가능) 변경 예시1: public void run(int x) { System.out.println(x); } => (x) -> { sout(x); } 변경 예시2: public int function(int x) { return x + 10; } => (x) -> { x + 10; } 그렇다고..
-
Java: Enum 클래스의 기본적인 이해각종 학습 요약/Java 2022. 5. 19. 09:29
Java: 열거형(enumerated type, enum)의 기본적인 이해 enum은 대개 상수 역할을 하는 식별자를 말한다. Java에서는 enum을 별도의 클래스 형식으로 다룬다. 전통적인 static final 상수에 비교해 어떤 점이 좋은지, 작성 방법과 사용 방법, 주의점을 기초적인 내용만 간략하게 다뤄보려고 한다. static final을 쓰면 되지 왜 그런걸 써? 문자열이나 숫자를 상수(static final)로 사용하는 것에 비해, 툴 레벨에서 지원받는 기능이 많다(오토컴플릿, 오타 표시 등). 수용할 값을 명확히 제한할 수 있다. (리터럴 비교가 아닌, 객체 비교로 인한 안정성) 컴파일 타임 타입안정성 보장. (변경될 일이 '확실히' 없다.) 코드에 맥락이 생긴다. 장점은 ..
-
Java: Comparable(compareTo())와 Comparator(compare())의 차이점Java 2022. 5. 17. 14:32
Java: Comparable(compareTo())와 Comparator(compare())의 차이점 오버라이딩과 오버로딩을 헷갈려하던 시절처럼 나란 녀석은 Comparable과 Comparator / compareTo()와 compare()를 계속 헷갈려하는 것이다... 더이상의 뇌절 방지를 위해서 한번 정리해보았다. 이제 그만 헷갈려줘 제발... Comparable과 Comparator는 인터페이스다. 각각 compareTo(T o), compare(T o1, T o2) 메서드를 갖고 있다. compareTo와 compare는 둘 다 비교한다. 그 중 먼저 compareTo()는 자신과 비교값을 비교한다 cls1.compareTo(cls2); 이런식으로 말이다. 객체를 단순히 등호연산자로 비교할 수..
-
Java: 컬렉션 프레임워크(Collection Framework) 개요각종 학습 요약/Java 2022. 5. 17. 13:41
Java: 컬렉션 프레임워크(Collection Framework) 컬렉션 프레임워크란? 데이터를 저장하기 위한 유용한 자료구조들을 구현해놓은 자바 클래스와 인터페이스의 집합. 주요 인터페이스(List, Map, Set)의 특징 List: 순서를 유지하는 선형적 구조. 마치 배열과도 비슷하다. Set: 순서 없이 값만 들어있는 구조. 대개 순서를 보장하지 않고, 중복 개념이 없다(덮어씌워짐). Map: 순서 없이 키와 값이 들어있는 구조. 대개 순서를 보장하지 않고, 중복 개념이 없다(덮어씌워짐). List와 Set List 주요 메서드 Object set(int index, Object o), addAll(int index, Collection c): 지정된 index에 삽입한다 Object get(i..
-
Java: 제네릭 Generic각종 학습 요약/Java 2022. 5. 17. 10:48
Java: 제네릭 Generic 제네릭이란? 객체 내부에서 사용할 데이터 타입을 파라미터 형태(타입 매개변수)로 지정해서, 일반화한 타입으로 사용하도록 하는 기술. 객체 입장에서 보면, 어떤 타입을 받을 건지 명확히 하지 않고 "'어떤 데이터 타입'이란게 넘어온다"라고 가정한 뒤 내부 속성과 동작을 정의하는 것이다. 객체를 사용하는 입장에서 보면, 객체를 생성할 때에 어떤 타입을 사용할 건지 명시하고, 객체를 활용할 때 해당 데이터 타입의 값만 사용하는 것이다. 말로 하면 헷갈리지만 기본 개념 자체가 엄청 복잡하진 않다. 제네릭의 장점 코드 작성 시 타입체크를 신경쓰지 않아도 된다(어긴 부분에서 컴파일 에러 발생). 제네릭을 사용하는 객체 안에서 타입 안정성이 보장된다. 타입 매개변수 제네..