List → Array List → String[] 문자열 리스트를 문자열 배열로 바꾸는 건 굉장히 간단하다. import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Example { public static void main(String[] args) { List list = new ArrayList(); list.add("101"); list.add("103"); list.add("107"); String[] arr = list.toArray(new String[list.size()]); System.out.println(Arrays.toString(arr) + ", " + arr.getClass(..
문제 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오. 작성해야 하는 함수는 다음과 같다. Java: long sum(int[] a); (클래스 이름: Test) 풀이 스트림을 이용해 굉장히 간단하게 구현할 수 있다. import java.util.Arrays; public class Prob15596Stream { long sum(int[] a) { long ans = Arrays.stream(a) .mapToLong(b -> b) .sum(); return ans; } }
문제 아홉 개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. 입력 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 출력 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다. 풀이 스트림을 이용해 간단하게 풀어보았다. import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Prob2562St..
문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 풀이 for문과 스트림을 이용해 풀어보았다. import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Prob4344Stream { ..
map() map()은 스트림에 접근해서 사용자가 원하는 매핑을 실행해주는 메서드이다. import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Example { public static void main(String[] args) { List list = Arrays.asList(2, 3, 5, 7); List result = list.stream() .map(a -> a * 2) // 모든 요소에 곱하기 2 .collect(Collectors.toList()); System.out.println(result); } } [4, 6, 10, 14] 지정된 리스트의 각 요소에 곱하기 2를 하..
스트림을 사용하다 보면 분명히 Intstream을 사용중인데 max(), min(), average()등에서 에러가 나곤 한다. 이때 최종연산에 int 변환을 붙이거나 반환 타입을 OptionalInteger로 변환하면 해결된다. 반환타입을 double로 받고 싶을 때도 마찬가지 에러가 나는데, 이는 max(), min(), average()의 반환타입이 기본적으로 OptionalInt, OptionalDouble이기 때문이다. 설명을 읽어보면 스트림이 비어있는 경우에 비어있는 optional을 반환한다고 쓰여있다. NullPointerException을 피하기위한 장치로 보이는데, 결과부터 말하면 Optional = OptionalInt Optional = OptionalDouble 이다. 귀찮아도 원..
문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대..
문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열 번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 풀이 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Prob3052Stream { pub..
스트림의 중간 연산 중 하나인 concat()은 Concatenate(잇다, 연쇄시키다)에서 왔다. 단어 그대로 특정 스트림을 다른 스트림 뒤에 붙이는 연산을 하는데, 사용 방법도 굉장히 간단하다. 먼저 두 개의 스트림을 이어 붙이는 경우 아래와 같이 구현하면 된다. public class PracticeConcat { public static void main(String[] args) { List list1 = Arrays.asList(2, 3, 5, 7, 11); List list2 = Arrays.asList(13, 17, 19, 23, 29); Stream.concat(list1.stream(), list2.stream()) .forEach(System.out::println); } } 두 개의..
스트림(Stream)은 부터 지원하기 시작한 기능이다. 람다를 이용해 배열과 컬렉션의 요소들을 순회하며 처리할 수 있는 반복자라고 보면 된다. 스트림(Stream)은 또한 '흐름'이라는 뜻을 가지고 있는데, 자바에서는 '데이터의 흐름'이라고 생각하면 편하다. 배열, 컬렉션에서 데이터의 흐름(스트림)을 생성해 원하는 대로 필터링하고 가공해서 결과를 얻는 로직이라는 뜻이다. 이 과정에서 람다가 사용되어 코드의 길이를 줄이게 된다. 스트림은 크게 세 가지 과정으로 나뉘는데, 스트림 생성하기 중간 연산 - 데이터의 가공 최종 연산 - 결과 만들기 가 그것이다. 과정에 들어가기에 앞서, 스트림의 특징에 대해 조금 더 알아보자. 스트림의 특징 선언형 프로그래밍 스트림의 가장 큰 특징은 데이터를 선언형으로 처리한다는..
- Total
- Today
- Yesterday
- a6000
- Backjoon
- 세계여행
- 스트림
- 면접 준비
- 스프링
- BOJ
- java
- 남미
- 동적계획법
- 맛집
- 파이썬
- 리스트
- RX100M5
- Algorithm
- 자바
- 유럽여행
- 기술면접
- 유럽
- 야경
- 여행
- Python
- 지지
- 백준
- 세계일주
- 알고리즘
- spring
- 칼이사
- 중남미
- 세모
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |