-
Java 코테준비 2일차CodeingTestPrac/Java Coding Test 2023. 4. 28. 15:17
이 글을 쓰기 전에는 약 3주 정도의 기간동안 파이썬을 이용한 코테준비를 했었다.
그러다가 python 을 지원하지 않는 코테를 보게 되는 경우가 생겨 준비를 한다.
사이트는 프로그래머스를 이용을 한다. -> 백준을 이용하는 분들은 buffer read 를 이용한 입력을 받는 것을 전제로 준비를 하자.
우선 프로그래머스는 다음과 같이 반환 타입을 요구한다.
class Solution { public int[] solution(String s) {
하지만, int[] 로 꼭 반환을 해야 테스트 케이스를 통과하는게 아니다.
급하면 다음과 같이 반환을 해주자.
class Solution { public List<Integer> solution(String s) {
코테는 기본적으로 알고리즘 이론을 아는 전제 하 자신이 잘하는 언어가 최소 1개 있다라는 전제에서
"자료형 , 반복문, 조건문 을 익히고, String 에서 int 변환 역으로 변환 등을 익히면 무슨 문제든 풀 수 있다".
그러나, 자바는 코드량이 특히 많기 때문에 꼭 stream 을 익히는것을 권장하며 많은 기업들이 구현 유형을 제시를 한다.추가적으로 , String list,array 의 sub 을 구하는 방식, sorting 방식을 익히고 ide 의 도움없이 프로그래머스 사이트에서 꼭 꼭 연습을 하자.
코드를 보자 ,
int[] items = {1, 2, 3, 4, 5, 6}; List<Integer> arrList = new ArrayList<>(Arrays.stream(items).boxed().collect(Collectors.toList())); int[] intAnswer = arrList.stream().mapToInt(Integer::intValue).toArray(); String[] stringAnswer = arrList.stream() .map(Object::toString) .toArray(String[]::new);
입력값이 보통 배열 int[] 와 같이 "Array" 배열로 주어짐으로 양방향으로 변환하는 필수 문법이다. <외우자>
다음과 같이 코드량을 줄일수도 있다.
Stream 을 적극적으로 사용 전
String s = "{{2},{2,1},{2,1,3},{2,1,3,4}}" ; String preString = s.substring(2,s.length()-2); preString = preString.replace("{",""); List<String> preList = new ArrayList(Arrays.asList(preString.split("},"))); List<List<Integer>> preIntList = new ArrayList(); for(String item :preList){ List<Integer> innerList = new ArrayList(); for(String is : item.split(",")){ innerList.add(Integer.parseInt(is)); } preIntList.add(innerList); } preIntList.sort(Comparator.comparingInt(List::size)); List<Integer> ansList = new ArrayList(); for(List<Integer> iteml: preIntList){ for(Integer item: iteml){ if(!ansList.contains(item)){ ansList.add(item); } } } int [] answer = new int [ansList.size()]; for(int i = 0 ; i < ansList.size();i++){ answer[i] = ansList.get(i); }
Stream 을 적극적으로 사용 후
String s = "{{2},{2,1},{2,1,3},{2,1,3,4}}" ; List<List<Integer>> intList = Arrays.stream(s.substring(2, s.length() - 2).split("\\},\\{")) .map(str -> Arrays.stream(str.split(",")).map(Integer::parseInt).collect(Collectors.toList())) .sorted(Comparator.comparingInt(List::size)) .collect(Collectors.toList()); // result : [[2], [2, 1], [2, 1, 3], [2, 1, 3, 4]] List<Integer> ansList = intList.stream() .flatMap(Collection::stream) .distinct() .collect(Collectors.toList()); // result : [2, 1, 3, 4] int [] answer = ansList.stream().mapToInt(Integer::intValue).toArray();
'CodeingTestPrac > Java Coding Test' 카테고리의 다른 글
코테 연습[자바 코테 준비 8일차] bfs 완탐(1) (0) 2023.07.03 코테 연습[자바 코테 준비 6일차] (0) 2023.06.30 구현 쉽지만 수학 문제 퀴즈 같은 구현[자바 코테 준비 5일차] (0) 2023.06.28 N 의 약수 모두 더하기 [자바 코테 준비 4일차] (0) 2023.06.28 카카오 블라인드 2019 실패율 [자바 코테 준비 3일차] (0) 2023.05.05