파란색 : 풀면서 어려웠던 부분 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를 이용해서 보이는 코드 길이를 줄일 수 있었다.
'알고리즘자료구조 > 알고리즘문제' 카테고리의 다른 글
백준_C#)그리디알고리즘_동전 (0) | 2019.09.05 |
---|---|
백준_C#)그리디알고리즘_ATM (0) | 2019.09.03 |
프로그래머스_C#)서울에서 김서방 찾기 (0) | 2019.08.30 |
프로그래머스_C#)나누어 떨어지는 숫자 배열 (0) | 2019.08.29 |
프로그래머스_C#)두 정수 사이의 합 (0) | 2019.08.28 |