codewar: Find the missing letter
문제
- https://www.codewars.com/kata/5839edaa6754d6fec10000a2
Codewars: Train your coding skills
Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.
www.codewars.com
문제 풀이:
- 언어는 Java로 풀었습니다.
- 배열에는 순차적으로 알파벳이 들어온다. 그러나 중간에 빠진 문자열이 존재한다.
-- 배열의 시작을 0생각을 하면, "0, 1, 2, 4, 5"로 변경해서 생각할 수 있고, 빠진 숫자는 "3" 이라는 것을 알 수 있다.
- Char에 대한 이해.
- Char는 '하나의 문자'를 의미하는 Type이다. 이 정보는 우리가 보기 편한 정보고 실질적으로 메모리상 / 컴퓨터상으로는 숫자로 저장이 된다. 그리고, 뿌려줄 때는 '문자'로 출력이 되는 것이다.
- 'a' 의 문자는 Ascii 코드 숫자 '61' 에 해당하는 값을 가지고 있다. 'b'는 '62'.
- 그렇기에 'b' - 'a' 의 계산을 할 시에는, Ascii 코드 숫자로 계산이 되어 결과로 Int형 1이 나오게 된다.
- 이를 통해서, '배열 내 n번째 element - 첫번째 element' 의 값은 n 이 나와야하는 것을 알 수 있다. ( 다른 말로 표현을 하면, 첫번째 element + n ==> n번째 element 이다. )
- char[] array = new char[] { 'a', 'b', 'c', 'd', 'f' }
- example.
- array[1] -array[0] --> 'b' - 'a' --> 62 - 61 : 1
- array[2] - array[0] --> 'c' - 'a' --> 63 - 61 : 2
- array[n] - array[0] --> ??? - 'a' --> ??? - 61 : n
- 그렇기에 For문을 통해서 array의 1번째부터 차례대로, 첫번째 문자열과 차이를 계산하고 n번째의 문자열이 나오지 않는다면, 빠진 문자로 판단하고 그 문자를 return 시켜준다.
public class Kata
{
public static char findMissingLetter(char[] array)
{
char start_char = array[0];
char result = ' ';
for(int i=1; i<array.length; ++i)
{
char current_char = array[i];
if( current_char - start_char != i )
{
result = (char)(start_char + i);
break;
}
}
return result;
}
}