greenhelix
greenhelix
greenhelix
05-11 10:54
  • All (229)
    • Algorithm (118)
      • Algorithm (17)
      • Graph (0)
      • Core (6)
      • Python (18)
      • PythonSnippet (4)
      • Java (59)
      • Kotlin (14)
    • Project (0)
    • Study (8)
      • License (5)
      • EIP (3)
    • Programming (63)
      • Android (41)
      • Flutter (1)
      • Bugs Life (21)
      • Linux (0)
    • Tech (32)
      • Tech (17)
      • Drone (4)
      • Hacking (11)
    • Life (6)
      • INGRESS (1)
      • 심시티빌드잇 (0)
250x250

티스토리

hELLO · Designed By 정상우.
greenhelix

greenhelix

#28_Code Signal Arcade >> Alphabetic Shift
Algorithm/Java

#28_Code Signal Arcade >> Alphabetic Shift

2019. 12. 3. 12:00

Code Signal -Arcade

코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당. 

주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...

되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요!


Alphabetic Shift

 알파벳 이동

주어진 문자열에서, 우리의 일은 그 문자열들의 문자하나하나를 다음 알파벳 문자의 순으로 재배치 해주는 겁니다. 

즉, abcd 라면, bcde로 바꿔주는 겁니다. z라면 a로 바꿔주는 겁니다. 

해볼까요? 

 

답안을 보겠습니다. 

String alphabeticShift(String input) {

    char [] seperate = input.toCharArray(); 
    String result= ""; 
      
     for(int i =0 ; i< seperate.length; i++) {
         
         if(seperate[i] == 'z'){ 
                seperate[i] = 'a'; 
         }else{
                seperate[i] += 1;      
         }
                
     } 
    
    System.out.println(Arrays.toString(seperate)); 
    
    for(int j =0; j<seperate.length; j++){
        result += Character.toString(seperate[j]); 
    }
    
    return result;    
    
}

일단, 입력된 문자열의 길이만큼  char 배열을 선언해줍니다. 

그리고, 결과값을 내보내줄 문자열 변수 하나를 선언. 

 

이제는 반복문입니다. 

     for(int i =0 ; i< seperate.length; i++) {
         
         if(seperate[i] == 'z'){ 
                seperate[i] = 'a'; 
         }else{
                seperate[i] += 1;      
         }
                
     } 

char배열의 길이만큼 범위를 설정한뒤,  각 배열의 요소안에 조건을 걸어줍니다. 

먼저, z 인경우  a 로 바꿔주는 예외적인 상황을 먼저 넣어줍니다. 

그리고 나서, 나머지는  +1을 하는 것으로 하죠. 

 

이렇게 하고 테스트 

 

    System.out.println(Arrays.toString(seperate)); 

crazy 를 예를 들어봤을때, 출력은 아래 Console output처럼 나오네요. 각 문자하나씩 다음 알파벳으로 변한 것을 알게되었습니다. 이제 끝. 이제 리턴시키면 됩니다. 

 

그러나, 여기서 배열에서 문자열로 하나씩 빼서 넣어줘야하는 문제가 잇죠. 

이것또한 반복문을 통해 해결해봅시다. 

  for(int j =0; j<seperate.length; j++){
        result += Character.toString(seperate[j]); 
    }

일단 Char 의 배열이니 charecter.toString()을 통해서 형변환을 해주고요. 

그다음은 간단하게 seperate[j]의 값을 result에 += 을 통해서 축적되게 해주면 끝! 

이렇게 하면 형변환만 잘해주면 어떠한 배열도 내가 원하는 곳에 쌓아서 넣어줄수 있습니다. 

 

끝. 

 


이제 앨리트 분들의 답안을 확인할 차례 

 JAVA 

String alphabeticShift(String inputString) {
    char[] ss = inputString.toCharArray();
    for (int i = 0; i < ss.length; ++i) {
        ss[i]++;
        if (ss[i] > 'z')
            ss[i] = 'a';
    }
    return new String(ss);
}

이렇게 하는 방법이 더 간단하고 직관적이네요. 

그냥  그외의 경우는 ++ 을 해주면되고, 

형변환도 String()안에 넣어주면되다니,, 신기할따름입니다. 배우고 갑니다! 

 


JS

function alphabeticShift(s) {
  var c="abcdefghijklmnopqrstuvwxyza"
  return s.replace(/./g,x=>c[c.indexOf(x)+1])
}

자바스크립트는 아예 변수로 모든 알파벳을 선언해주고, replace를 통해서 풀었내요. 쌈박해.


Python 

def alphabeticShift(s):
    return "".join(chr((ord(i)-96)%26+97) for i in s)

역시나, 파이썬이 한줄입니다.

계산하는건가...? 아직은 무엇인지 모르겠네요. 

 

 

공감 버튼 눌러주시면 더욱 많은 포스팅을 올리는데 힘이 됩니다!

부탁드려요 돈드는거 아니잖아요~

728x90
반응형
저작자표시 비영리 변경금지

'Algorithm > Java' 카테고리의 다른 글

#29_Code Signal Arcade >> Chess Board Cell Color  (0) 2019.12.04
#27_Code Signal Arcade >> Variable Name  (0) 2019.12.02
#26_Code Signal Arcade >> Even Digits Only  (0) 2019.11.30
    'Algorithm/Java' 카테고리의 다른 글
    • #30_Code Signal Arcade >> Circle Of Numbers
    • #29_Code Signal Arcade >> Chess Board Cell Color
    • #27_Code Signal Arcade >> Variable Name
    • #26_Code Signal Arcade >> Even Digits Only
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바