-
[네이버클라우드 캠프/1주차] "dBEfIZ" → "ajEfcC" 출력하기네이버클라우드 캠프 | BE/Java 과제 2023. 3. 20. 11:16728x90
3월 14일(화) 처음으로 과제를 받아 풀며
사고의 방식 혹은 생각의 흐름에 대해 정리하고 싶어 블로그 글로 남깁니다.
❓문제 : 삼항조건 연산자를 사용하여 "dBEfIZ" → "ajEfcC" 출력하시오.
1. 주어진 값과 결과 값의 아스키코드를 먼저 확인하였습니다.
초기 값 결과 값 d 100 a 97 B 66 j 106 E 69 E 69 f 102 f 102 I 73 c 99 Z 90 C 67 같은 자리에 위치한 값을 비교하며 (d-a, B-j, E-E 등), 특정값을 더하거나 빼는지 혹은 곱하거나 나누는지 등을 확인했으나
현재 위치한 값에서는 특정한 규칙을 찾을 수 없었습니다.
2. 주어진 값을 역순으로 나열하였습니다.
초기 값 역순 값 결과 값 d 100 Z 90 a 97 B 66 I 74 j 106 E 69 f 102 E 69 f 102 E 69 f 102 I 74 B 66 c 99 Z 90 d 100 C 67 주어진 값을 역순으로 나열한 뒤, 같은 자리에 위치한 값을 비교하였습니다.
첫 줄에 위치한 Z와 a 값을 비교했을 때에는 역순 값 + 7 = 결과 값이 나오는 것을 확인하며
'역시 이것도 규칙이 아닌가...' 라고 생각했지만
역순 값 계산 중 결과 값 Z 90 +7 a 97 I 73 +33 j 106 f 102 -33 E 69 E 69 +33 f 102 B 66 +33 c 99 d 100 -33 C 67 a와 Z를 제외하고는 모두 ±33이 되는 것을 확인할 수 있었습니다.
소문자 → 대문자로 변경 : -33
대문자 → 소문자로 변경 : +33엑셀에 정리하여 확인해보면, 앞서 얘기한 a와 Z를 제외하고 모두 대응되는 알파벳이 있는 것을 확인할 수 있습니다.
3. 최종 소스코드
public class Main { public static void main(String[] args) { String str = "dBEfIZ"; // 기본 String newStr =""; // 역순 결과 집어넣기 String res =""; // 최종 결과 출력 // 역순 출력 for(int i = str.length() - 1; i >= 0; i--) { newStr += str.charAt(i); } System.out.println("역순 결과 : "+ newStr); // 대소문자 변경 for(int i = 0; i < str.length(); i++) { char ch = newStr.charAt(i); char capCh = (ch == 90)? (char)97 : (char)((65 <= ch && ch <= 90)? ch+33 : ch-33); res += capCh; } System.out.println("최종 결과 : " + res); } }
3-1. 응용 버전
public class Main { public static void main(String[] args) { String str = "dBEfIZ"; // 기본 String res =""; // 최종 결과 출력 // 대소문자 변경 + 역순 출력 for(int i = 0; i < str.length(); i++) { char ch = str.charAt(i); ch = (ch == 90)? (char)97 : (char)((65 <= ch && ch <= 90)? ch+33 : ch-33); res = ch + res; } System.out.println(res); } }
'네이버클라우드 캠프 | BE > Java 과제' 카테고리의 다른 글
[네이버클라우드 캠프/1주차] 배열의 출력 (0) 2023.03.22 [네이버클라우드 캠프/1주차] 트리 모양의 별 (0) 2023.03.22 [네이버클라우드 캠프/1주차] 369 게임 (0) 2023.03.20 [네이버클라우드 캠프/1주차] 가위바위보 게임 (0) 2023.03.20 [네이버클라우드 캠프/1주차] 구구단 게임 (0) 2023.03.20