- 문제
- 간단한 문제 설명
문자열과 정수 n이 주어졌을 때, 문자열의 각 문자를 그 문자의 아스키코드에 n을 더한 만큼의 문자로 변환하는 문제. 단 'z' + 1 = 'a', 'Z' + 1 = 'A'이고 공백은 몇을 더해도 공백이다. - 내 코드
- 내 코드 설명
출처를 참고했다.
처음에 'z', 'Z', ' '만 신경써서 풀어서 제대로 풀지 못했다. 'y' + 2 = 'a'과 같은 경우를 생각하지 않았다. 문자열의 각 문자를 c라 했을 때 c가 소문자인 경우 'a'+(c-'a'+n)%26 수식을 사용하면 각 문자에 얼마를 더하든지 'z' 다음에는 'a'로 넘어가게 되어있다. 대문자는 수식에서 'a'를 'A'로 바꾸면 된다.
String.chars()는 문자열을 IntStream으로 바꿔주며, map 메서드를 사용해 정수형으로 바뀐 각 문자를 위 과정으로 연산하고, mapToObj 메서드를 사용해 각 문자를 char형으로 변환해서 String 값으로 바꿔주고, reduce 메서드를 사용해 스트림의 첫 번째부터 끝까지 하나씩 더해서 하나의 문자열로 만들어 반환하다.
caesar_cipher
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||