파란색 : 풀면서 어려웠던 부분 or 고려해야 될 부분

빨간색 : 해결방법

초록색 : 느낀 점

 

알고리즘문제풀이 

문제

입력된 문자열의 알파벳이 +n 했을 경우 'z', 'Z'을 초과했을 경우 다시 'a', 'A'부터 밀려난 값을 구하는 것이 포인트

ex) 알파벳 'y'이고 n 값이 '25'이면 'z'를 초과 하게된다.

 

내 풀이

맨 처음 if(temp == 32)는 공백인 경우의 아무 작업도 하지 않기 위해 넣었음  다른 방법이 있을 것 같은데;;

'a~z', 'A~Z'은 알파벳은 26개이며 입력된 값이 90을 넘을 경우(90('Z') , 122('z')) 다시 알파벳이 시작되는('a', 'A')부터 시작하기 위해 -26을 빼는 과정으로 해결했다. 

 

다른 사람 풀이

'z'와'Z'를 각각 int로 캐스팅한 값을 가지고, if가 공백이 아닌 경우를 체크하고 밑에서 char.IsUpper로 대, 소문자를 체크해주는데 이 과정이  굳이 없어도 될 것 같다. 마지막에는 answer +=을 해주는 게 아닌 string.fomat을 활용해서 채워주고 있다.

위 코드를 활용해서 조건문을 좀 줄여서 다시 작성해봤다.

느낀 점

확실히 같은 문제를 봐도 접근하는 방법이 다르다는 것을 느꼈다. 물론 이 문제 자체가 복잡하지 않아서 크게 벗어나지는 않지만 IsUpper를 이용해서 보이는 코드 길이를 줄일 수 있었다.

 

 

 

반응형

+ Recent posts