IBM Minus 1

문제 복기

  • 틀린 이유(틀린 부분)

일단 입력 문자 char에 대해 1을 더하는 로직은 맞는데, Z의 다음 문자는 A가 되야하기 때문에 char tmp == Z의 아스키코드값 +1 이면 A로 바꿔주는 부분이 필요하다!

  • 주의할 점✮

문자 조작할 땐 증감연산을 먼저 해주고 출력해야한다! char tmp = 'B'라고 하자. tmp를 'A' 또는 'C'로 변환하고 자할 때 tmp = tmp-1 또는 tmp = tmp+1 해주고 print(tmp) 해주면 A 또는 C가 출력된다.

하지만, print(tmp+1) 이렇게 증감연산을 출력문에 포함해버리면 이것은 그 문자를 출력하는 것이 아니라 아스키값을 출력한다!

  • StringTokenizer로 문자열 입력받기 - .nextTokenk()

StringTokenizer로 문자열을 입력받을 때 StringTokenizer는 공백 단위로 토큰을 인식한다!

그래서 String을 가져오고 싶을 때는 .nextToken()을 사용하면 된다! StringTokenizer st = new StringTokenizer(br.readLine()); //bufferedreader의 readLine()으로 한줄을 읽는다. String input = st.nextToken();;//공백문자 단위로 String이 input에 저장된다!

for(int i=1;i<=n;i++) {
			System.out.println("String #"+i);
			st = new StringTokenizer(br.readLine());
			String input = st.nextToken();
			//System.out.println(st.nextToken());
			inputStr = input.toCharArray();
			for(int j=0;j<inputStr.length;j++) {
				char[] newStr = new char[inputStr.length];
				newStr[j] = (char)(inputStr[j]+1);
				//System.out.print(newStr[j]);
				System.out.print(newStr[j]);//변형한 문자열.
			}
			System.out.println();//한줄 공백 두고.
			System.out.println();//한줄 공백 두고.
		}

Last updated