Code Signal -Arcade
코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당.
주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...
되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요!
Strings Rearrangement
스트링들을 재 정립하라.??
문제를 먼저 볼까요?
주어진 같은 길이의 문자 배열이 입력됩니다. 문자열들은 시퀀스를 유지하여야 하며, 한개의 요소가 위치가 변동되었을때, 시퀀스가 유지되면 true 그렇지 않으면 false를 반환합니다.....
처음 이 문제를 접하고,, 너무 뭔말인지 몰랐다.
너무 어렵기도 하고 정확하게 이해가 되질 않아서 결국 답안을 오픈시켜서 복붙....
(진짜 너무 어려웠다. 지금도 답안 코드를 정확히 이해 못하는게 대단히 그지같은 문제였다. )
답안 코드를 보겠다.
boolean stringsRearrangement(String[] inputArray) {
boolean[] used = new boolean[inputArray.length];
findeSequence(inputArray, null, used, 0);
System.out.println(Arrays.toString(used));
// 입력값의 길이만큼 used를 만들고, 그 안에는 기본값이 false로 채워져 있다.
return success;
}
boolean success = false; // 리턴값을 선언해주고, 기본값은 false로 설정해둔다.
void findeSequence(String[] a, String prev, boolean[] used, int n){
if(n == a.length){
success = true;
return;
}
// 입력값의 길이가 1개가 아닌이상은 여기에 적용된다.
for(int i=0; i<a.length; i++){
// System.out.println(a.length);
if(!used[i] && (prev == null || differByOne(prev, a[i]))){
used[i] = true;
findeSequence(a, a[i], used, n+1);
used[i] = false;
System.out.println(i);
System.out.println(Arrays.toString(used));
}
}
} // end findeSequence
boolean differByOne(String a, String b ){
int count =0;
for(int i =0; i< a.length(); i++){
//a b 의 값들을 한글자식 분할해서 같은지 비교해준다.
if(a.charAt(i) != b.charAt(i)){
count ++;
// 만약 다르다면, count 를 +1 해준다.
}
}
System.out.println("카운트는 "+count);
return count == 1;
// count가 1이면 true를 반환하고 아니면 false를 반환한다.
} // end differByOne
이해가 되시는분...? 있나요.
저는 대략적으론 이해가 되서 넘어갔습니다. 각 주어진 배열 길이 만큼 t / f 배열 형태로 불린값으로 배열을 생성한뒤,
자리를 바꿔갔을때, 그게 일치하는지 안하는지 확인해주는 거 같았습니다.
differByOne 메서드를 통해서 각 글자별로 분석을 해주고, 루프를 돌려서 시퀀스가 유지되는지를 계속 반복하여 따져주는 듯한 ..? 느낌이랄까요.
로그를 뽑아보면, 각 자리별로 true값이 다 나와줘야 결론은 true
한자리라도 true값이 안나오면 false의 느낌입니다....
일단 그렇다네요.. 후다닥 패쓰!! 끝
공감 버튼 눌러주시면 더욱 많은 포스팅을 올리는데 힘이 됩니다!
부탁드려요 돈드는거 아니잖아요~
'Algorithm > Java' 카테고리의 다른 글
#34_Code Signal Arcade >> Extract Each Kth (0) | 2020.01.30 |
---|---|
#32_Code Signal Arcade >> Absolute Values Sum Minimization (0) | 2020.01.12 |
#31_Code Signal Arcade >> Deposit Profit (0) | 2019.12.06 |