프로그래머스 커뮤러닝을하며 기지국 설치와 가장큰수 문제를 풀게 되었고 풀며 배운것들
1.Java Char to Int
char c1 = '9';
int i1 = c1 - '0'; // 57 - 48 = 9
char c1 = '9';
Character.getNumericValue(c1) // 9
2.Java array to ArrayList
1.Array.asList 사용
String[] arr = {"a", "b", "c", "d"};
List<String> list = Arrays.asList(arr);
2. 반복문 사용
String[] arr = {"a", "b", "c", "d"};
List<String> list = new ArrayList<>();
for (String item : arr) {
list.add(item);
}
3. stream 사용
int[] numbers
ArrayList<Integer> integerArray = (ArrayList<Integer>)
Arrays.stream(numbers).boxed().collect(Collectors.toList());
int[]형은 asList로 변환이안되서 찾아보다 발견한것
나중 stream 공부하며 같이 보면될듯함
3.Java Comparator Comparable
여기서는 Comparator 객체만 사용한걸 정리
일단
Arrays.sort(number, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o2).compareTo(o1);
}
});
내림차순 : return (o2).compareTo(o1);
오름차순 : return (o1).compareTo(o2);
응용
프로그래머스 가장 큰수
내림차순 : return (o2+o1).compareTo(o1+o2);
오름차순 : return (o1+o2).compareTo(o1+o2);
이 int compare 메서드를 간단히 설명하자면, 정렬이 진행될 때 자리바꿈(=정렬) 여부를 결정하는 값을 넘겨주는 역할을 한다.
만약 return값이 0이나 음수이면 자리바꿈을 하지 않고, 양수이면 자리바꿈을 수행한다.
만약 오름차순이 아니라 내림차순으로 정렬하고 싶다면 매개변수의 순서를 바꿔주면 된다.
위에서 return (o2).compareTo(o1); 가 왜 내림차순이 되냐면 위 compare 메소드와 같은 맥락이다
쉽게 생각하면 a-b라 생각하면된다
메소드를 실행한값이 양수 0 음수가 나오며 0이나 음수이면 자리바꿈을 하지 않고, 양수이면 자리바꿈을 수행한다.
만약 오름 차순을 하길원한다 기준값 o1 - 비교값 o2를 했을때 오른쪽 값이 더크게 되면 바뀌지않고 왼쪽값이 더크게되면 바뀌게 되는 상황을 만들면된다
마찬가지로 내림차순을 원한다면 앞에있는 수 보다 뒤에있는 수가 더크면 안되니 기준값 o2 - 비교값 o1 값을 나오게 설정해준다면 o2가 더크다면 양수가 return되게 되며 내림차순이 되는 상황이 만들어지게 된다
쉽게 말하면 내림차순으로 하고 싶은데 뒤에 더높은숫자가 있다 그럼 바뀔 수 있는 상황을 만들면되는데 그 상황이
양수인 상황이니 그상황을 만들어주면되는것
'리턴되는 int값이 음수이면 현재 인스턴스가 비교대상인 인스턴스보다 작고, 양수이면 크고, 0 이면 같도록 하자'
작으면 음수를 리턴,같으면 0을 리턴, 크면 양수를 리턴,
양수면 바꾸고 음수면안바꾸고
1기존값 2 비교값
1,2가있을때 기존값.compareTo(비교값) 하면 1-2가 되어 음수가 되어안바뀌고 오름차순이되며
비교값.compareTo(기존값)하면 오른쪽에있는게 더크다는게 되니 바꿈 2-1이 양수니 오른쪽에있는값이 더크다는것
그냥 기준값을 토대로 기준값이면 오름차순 아니면 내림차순인듯?
1바꾸기 0,-1 안바꾸기
이건 객체 정렬하면서 제대로 날잡고 정리해야할듯
참고사이트
https://m.blog.naver.com/occidere/220918234464
[정렬] Comparable과 Comparator
자바에서 정렬을 하다 보면 Comparable과 Comparator를 자주 마주치게 된다. 본 게시글에서는 Comparabl...
blog.naver.com
https://www.codeit.kr/community/threads/1308
코딩이 처음이라면, 코드잇
월 3만원대로 Python, JavaScript, HTML/CSS, Java 등 2,600개 이상 프로그래밍 강의를 무제한 수강하세요
www.codeit.kr
https://hianna.tistory.com/569
[Java] ArrayList 정렬하기 (오름차순, 내림차순, 사용자 정의)
Collections.sort() 오름차순으로 정렬하기 내림차순으로 정렬하기 대소문자 구분없이 정렬하기 List.sort() - Java 8 이후 오름차순으로 정렬하기 내림차순으로 정렬하기 대소문자 구분없이 정렬하기 사
hianna.tistory.com
4.double형
값을 double형으로 나오게한후 올림후 int로 바꾸려했는데
int로 계산을 한후 dobule로 올리니 값이 제대로 안나옴 계산할떄부터 double로 해야함
2.0/3 or 4/3.0
//answer=answer+(int) Math.ceil((double)(((stations[i]-w)-idx)/wl));
값이 제대로 나오지 않아 보니 맨처음 부터 형을 변환하고 해야되는 실수를함