Character.isDigit - 문자인지 숫자인지 확인할 수 있는 함수
(int)(Math.log10(n)+1 => 정수의 자릿수 구하기!
String str = n + ""; --> n을 string으로 형변환 !!
int[] answer = new int[str.length()];--> str의 길이만큼 int 배열 생성
equals는 메소드이며, 객체끼리 내용을 비교할 수 있도록 한다.
== 는 비교를 위한 연산자이다
equals 메소드는 비교하고자 하는 대상의 내용자체를 비교!!!!!
== 연산자는 비교하고자 하는 대상의 주소값을 비교!!!
따라서 배열 안의 value값을 비교하고 싶을때는 equals 메소드를 쓰자!
Key-Value의 Pair를 관리하는 클래스.
HashMap<String, Integer>로 지정하면 Key는 String 형태, Value는 Integer 형태로 정의하는 것.
해쉬를 사용한 문제?
https://school.programmers.co.kr/learn/courses/30/lessons/42576
- 해시 더 공부해보기
[프로그래머스] 전화번호 목록 (해시 Lv. 2)
[프로그래머스] 위장 (해시 Lv. 2)
[프로그래머스] 베스트 앨범 (해시 Lv. 3)
1) HashMap 만들기
Key는 Participant의 이름
Value는 Count
String/Integer 지정
2) HashMap에 Participant 추가
Hashing한다라고도 표현.
HashMap에 Participant를 전부 추가.
* HashMap.put(Key, Value): HashMap에 Key와 Value를 한 쌍으로 입력하는 함수
이 문제에서는 Count Table을 만들어 각 Participant의 Count를 세어 놓는다.
다음 단계에서는 완주한 사람들은 Value를 1씩 빼는 동작, 남아있는 한 사람이 완주하지 못한 선수가 됨.
3) HashMap에서 완주한 선수 빼기
4) Value가 0이 아닌 참가자 찾기
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String player : participant) hm.put(player, hm.getOrDefault(player, 0) + 1);
for (String player : completion) hm.put(player, hm.get(player) - 1);
for (String key : hm.keySet()) {
if (hm.get(key) != 0){
answer = key;
}
}
return answer;
}
}
다른분이 푸신 코드이다. 진짜 깔끔하고 잘짰길래 가져와봤다.
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String , Integer> map = new HashMap<>();
for(String player : participant)
map.put(player, map.getOrDefault(player, 0) + 1);
for(String player : completion)
map.put(player, map.get(player) - 1);
Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();
while(iter.hasNext()){
Map.Entry<String, Integer> entry = iter.next();
if(entry.getValue() != 0){
answer = entry.getKey();
break;
}
}
return answer;
}
}
iterate: (계산, 컴퓨터 처리 절차를) 반복하다
iterator: 반복자
iterator는 ArrayList, HashSet과 같은 컬렉션을 반복하는 데 사용할 수 있는 객체.
=> 반복자.
메소드
import java.util.*;
class Solution {
public long solution(long n) {
long answer = 0;
String str = Long.toString(n);
String[] arr = str.split("");
Arrays.sort(arr, Collections.reverseOrder());
str = String.join("",arr);
answer = Long.parseLong(str);
return answer;
}
}
String str = Long.toString(n); -> n을 string으로 바꿔줌
String[] arr = str.split(""); -> 공백없이 배열로 스트링을 나눠줌
Arrays.sort(arr, Collections.reverseOrder()); -> 내림차순으로 정렬
str = String.join("",arr); -> 배열 합치기
answer = Long.parseLong(str); -> long 타입으로 변환