문자열 str이 주어집니다.
문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요.
제한사항
1 ≤ str의 길이 ≤ 10
입력 #1
abcde
출력 #1
a
b
c
d
e
문제 보자마자 90도를 어떻게 돌리지...? 이러고 있었다. 그런 기능이 있는 줄 알았단 얘기다..
이렇게 구현하려면 문자열이 아닌 문자열 안의 문자 하나가 필요하다. 그리고 문자 하나씩 한 줄로 출력하면 된다.
문자열을 한 글자씩 분리하기 위해서 쓸 수 있는 방법들은 다양하다.
문자열을 한 글자씩 나눠
char
형 배열로 변환한다.
문자열의
i
번째 글자를char
로 반환한다.
2번 까지는 대소문자 바꿔서 출력하기에 썼었다.
특정문자(a) 를 기준으로 문자열을 나누어 배열에 저장한 후 반환한다.
String a = "abc"
String[] arr = a.split("");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
// a
// b
// c
}
"" 사이에 들어가는 내용 기준으로 문자열을 자른다.
"" 사이를 공백으로 두면 한 단어씩 자를 수 있다.
String.Substring(i, i+1);로 한 글자씩 자른다.
String a = "abcde";
System.out.println(a.substring(0,1)); // a
값을 하나만 전달하면 그 위치를 포함하여 이후의 모든 문자열을 한꺼번에 불러오지만
첫 번째 값부터 두 번째 값 바로 앞 까지 잘라내기 때문에 (i, i+1)를 전달하면 하나만 불러오는 것도 가능하다.
문자열 | index 값 |
---|---|
a | 0 |
b | 1 |
c | 2 |
d | 3 |
e | 4 |
index 값 0부터 1 바로 앞 까지를 자르기 때문에 'a' 만 자를 수 있다.
나는 String.charAt(i)
를 사용해서 풀었고 코드는 다음과 같다.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
for(int i = 0; i < a.length(); i++) {
System.out.println(a.charAt(i));
}
}
}
다른 사람들 코드도 구경했는데 다양해서 신기했다. 아직은 아는 메소드가 많이 없어서 어떻게 써야할지 감이 안 오지만 하다보면 익숙해지겠지.