티스토리 뷰
프로그래머스 1단계들을 다 풀어간다.
사실 뒷부분으로 갈수록 너무 쉬워지고 있다.
빨리 스프링 프로젝트가 끝나고 알고리즘 학습을 하고 싶다.
1. array를 복사할때는 객체와 같아서 그냥 변수에 넣어 주면 안된다.
1) Arrays.copyOf() 사용
2) System.arraycopy() 사용
3) arr.clone() 사용 (2차원 배열에서도 사용)
2. 정수인지 유리수인지 판별하기 위해서 num % 1 == 0 을 사용 할 수 있음.
ex ) 제곱수인지 판별 : Math.sqrt(num) % 1 == 0 ? "제곱수" : "제곱수아님"
3. 2차원 배열 (Matrix)에서, arr이 2차원 배열이라고 할때, arr.length 하면 element의 개수가 아니라 row의 개수가 나온다.
arr[0].length 하면 column의 개수.
-> 두 개 곱하면 전체 element의 개수.
4.int 배열을 List로 바꿀때에는 Arrays.ListOf()로 안된다. (Integer형만 지원.)
따라서 int 배열 -> Integer 배열 -> Arrays.ListOf()로 가야한다.
1) (Stream 이용해서 .boxed() -> collect(Collector.toList())
2) 아니면 List 선언한 다음 for문으로 list.add 통해 하나하나 넣어주기.
5. 역순 배열을 사용하는 방법으로는
1) stream의 sort(Comparator.reverseOrder())
2) StringBuilder의 reversed() 사용
3) for문돌면서 temp 만들어 하나하나 돌리던지.
4) Arrays.sort(arr, Comparator.reverseOrder()) 사용
5) Collection인 List로 만들어 Collections.sort(list, Collections.reverseOrder()) 사용
* Collections.sort(list, String.CASE_INSENSITIVE_ORDER) 참고. (대소문자 상관없이 오름차순)
* Collections.sort(list, Collections.reversedOrder(String.CASE_INSENSITIVE_ORDER)) : 대소문자 상관없이 내림차순
6) Comparator, Comparable 사용 (사용자 정의)
6. String의 생성자로, Stirng(char arr, int start_index, int count)로 캐릭터 배열의 일부를 string으로 생성 할 수 있다.
또한 char 배열을 생성자로 받아 String으로 변환 가능하다 (str.toCharArrary() <-> new String(char[] chars)
* int는 안됨. int는 String.valueOf()로 변환.
* int를 String으로, String을 int로 변환하는 방법은 아래 블로그 참고.
https://hianna.tistory.com/524
후기 :
- Stream API 를 좀 더 자세히 알아보고 사용 방법에 익숙해 지자.
- 자바 stream과 for loop 사용 하는 것의 시간 복잡도의 차이가 궁금해서 검색중 찾아봤는데 흥미로웠다. (아래 블로그)
병렬스트림 위까지 읽었는데, 극단적 성능을 요구 하지 않는다면, 가독성과 유지보수에 뛰어난 Stream을 사용하는것이 좋겠다는 생각이 든다. (물론 코테에서 성능을 높히고 시간을 줄여야 한다면 stream을 사용하는것이 좋지 않을거란 판단이 든다)
'Programming > Data Structures & Algorithms' 카테고리의 다른 글
Stack과 Queue (0) | 2022.07.26 |
---|---|
이번주 코테문제 풀면서 배운것 3 (0) | 2022.07.19 |
이번주 코테문제 풀면서 배운것. (0) | 2022.06.13 |
Boyer-Moore 법 (문자열 검색 알고리즘) (0) | 2022.05.28 |
KMP 법 (문자열 검색 알고리즘) (0) | 2022.05.27 |
- Total
- Today
- Yesterday