일상적 이야기들.

codewar: Find the missing letter 본문

프로그래밍/알고리즘 문제풀이

codewar: Find the missing letter

noveljava 2019. 6. 12. 12:13

문제

 - 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;
  }
}

'프로그래밍 > 알고리즘 문제풀이' 카테고리의 다른 글

codewar: Errors: histogram  (0) 2019.06.21
codewar: Scalling Squared Strings.  (0) 2019.06.18
codewar: RemoveString Spaces  (0) 2019.06.18
codewar: Alphabet war  (0) 2019.06.12
codewar: Beginner - Lost Without a Map  (0) 2019.06.12
Comments