728x90

자바 120

[Java] Stream & Lambda 람다 스트림

스트림(Stream)과 람다(Lambda)는 Java 8부터 추가된 API다. 교육을 받던 시기 람다에 대해서 잠깐 언급만하고 넘어갔었고, 아직까지 업무하면서 제대로 사용해본적은 없지만, 공부에는 끝이 없는지라 예제를 통해 어떤 녀석들인지 알아보기로 한다. Lambda 먼저 람다부터 살펴보면 class Calculator { Calculator() {}; public int calc(int n) { return n + 1; }; } class Driver { public static void main(String[] args) { int n = 2; Calculator cal = new Calculator(); System.out.println(cal.calc(n));//3 } } Calculator 클..

JAVA 2022.01.28

[Java] HashMap

HashMap 이란? Map 인터페이스를 구현하고 있는 대표적인 자바 클래스. key-value쌍으로 되어있다. Map의 대표적인 특징은 key는 정확히 하나의 value만 가질 수 있다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { } HashMap 클래스의 내부는 위와 같은 상속, 구현 관계를 가지고 있다. HashMap은 왜 필요할까? List 형태를 사용하지 않고 HashMap을 사용하는 이유는 바로 성능 때문이다. 만약 List를 사용했다면 검색하는데 있어 시간복잡도는 O(n)으로 나타날것이다. 반면 HashMap은 삽입, 검색 시간에 시간복잡도 O(1)이라는 이점을 가지고 있다. key값의 ..

JAVA 2022.01.26

[Java] StringTokenizer hasMoreTokens() nextToken()

백준 알고리즘을 하다가 Scanner 대신 Buffereader를 많이 사용하는걸 연습했었고, 그 과정에서 많이 보게된 StringTokenizer hasMoreTokens() 그리고 nextToken() 이 친구들이 무엇인지 한 번 살펴보고자 한다. 일단 여기서 자꾸 언급되는 토큰(Token) 이란? ※ 컴파일러는 번역할 경우 먼저 워드해석이라 불리는 기호열로서 입력된 소스 프로그램에서 구문 규칙에 기초하여 이름표, 연산자, 딜리미터 등의 식별을 하고, 내부데이터의 열로 변환. 이 워드해석을 하여 식별되는 단위를 실러블(syllable)이라 하며, 그 내부데이터 표현을 토큰이라함(출처: 네이버 사전) StringTokenizer - 사용자가 지정하는 구분자를 경계로하여 문자열을 나눠주는 Class - ..

JAVA 2022.01.24

[Java] 불필요한 객체 생성를 피하기 이펙티브 자바 new String

똑같은 기능의 객체를 매번 생성하는것보다는 객체 하나를 재사용하는편이 나을때가 많다. 두 코드는 과연 같을까? String str = "RomaMan";개선된 버젼 String str = new String("RomaMan");//하지 말아야할 행위! new String("RomaMan")의 경우는 실행 될때마다 String 인스턴스를 새로 만들게 된다. 생성자에 넘겨진 "RomaMan" 자체가 이 생성자로 만들어내려는 String과 기능적으로 똑같기 때문이다. 만약 이 문장이 반복문이라 빈번히 호출되는 메서드 안에 있다면 쓸데없는 String 인스턴스가 수백만개가 만들어 질 수 있다. 개선된 버젼은 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용하게 된다. 더불어 이러한 방법을 ..

JAVA 2022.01.21

[Java] 백준 17388번 와글와글 숭고한

https://www.acmicpc.net/problem/17388 17388번: 와글와글 숭고한 첫 번째 줄에 숭실대학교의 참여도, 고려대학교의 참여도, 한양대학교의 참여도를 의미하는 세 자연수 S, K, H가 공백으로 구분되어 주어진다. (0 ≤ S, K, H ≤ 100) 세 대학의 참여도는 모두 다르다. www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class BJ17388 { public static void main(String[] ..

Algorithm 2022.01.21

[Java] 백준 11948번 과목선택

https://www.acmicpc.net/problem/11948 11948번: 과목선택 JOI는 물리, 화학, 생물, 지구과학, 역사, 지리 총 6 과목의 시험을 봤다. 각 시험의 만점은 100점이다. JOI는 물리, 화학, 생물, 지구과학 4과목 중에서 3 과목을 선택하고 역사, 지리 2 과목 중에 www.acmicpc.net 선택과목을 통해 최대값을 구하는 문제. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class BJ11948 { public static void main(String[] args) throws IO..

Algorithm 2021.12.30

[Java] 백준 10179번 쿠폰

https://www.acmicpc.net/problem/10179 10179번: 쿠폰 당신은 어떤 물건이라도 20% 할인해주는 쿠폰을 가지고 있다. 원래 가격이 주어질 때, 쿠폰을 사용하면 얼마가 되는지 알려주는 프로그램을 작성하시오. www.acmicpc.net 조건이 적용되는 입출력 문제. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BJ10179 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRe..

Algorithm 2021.12.29

[Java] 백준 10039번 평균 점수

https://www.acmicpc.net/problem/10039 10039번: 평균 점수 입력은 총 5줄로 이루어져 있고, 원섭이의 점수, 세희의 점수, 상근이의 점수, 숭이의 점수, 강수의 점수가 순서대로 주어진다. 점수는 모두 0점 이상, 100점 이하인 5의 배수이다. 따라서, 평균 점 www.acmicpc.net ↑ 해당문제 링크 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BJ10039 { public static void main(String[] args) throws IOException { BufferedReader br = new Buffer..

Algorithm 2021.12.29

[Java] 백준 5575번 타임 카드

https://www.acmicpc.net/problem/5575 5575번: 타임 카드 JOI 상사는 직원의 근무시간을 타임 카드로 관리하고있다. 직원들은 전용 장비를 사용하여 타임 카드에 출근 시간을 기록한다. 근무를 마치고 퇴근할 때도 타임 카드에 퇴근 시간을 기록한다. www.acmicpc.net import java.io.*; import java.util.StringTokenizer; public class BJ5575 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int i =0; i

Algorithm 2021.12.23

[Java] 백준 5543번 상근날드

https://www.acmicpc.net/problem/5543 5543번: 상근날드 입력은 총 다섯 줄이다. 첫째 줄에는 상덕버거, 둘째 줄에는 중덕버거, 셋째 줄에는 하덕버거의 가격이 주어진다. 넷째 줄에는 콜라의 가격, 다섯째 줄에는 사이다의 가격이 주어진다. 모든 가 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BJ5543 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStre..

Algorithm 2021.12.23
728x90