<섹션1-STRING> 4. 단어 뒤집기

조이·2021년 7월 20일
0

자바 알고리즘

목록 보기
4/41
post-thumbnail

> 4. 단어 뒤집기

<설명>

N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요.

<입력>

첫 줄에 자연수 N(3<=N<=20)이 주어집니다.
두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.

<출력>

N개의 단어를 입력된 순서대로 한 줄에 하나씩 뒤집어서 출력합니다.

===================================================

<코드>

단어를 뒤집는 알고리즘은 두 가지의 방법으로 해결할 수 있다.

(1) StringBuilder().reverse().toString()를 이용하는 방법

리스트를 이용하여 답을 저장하고 반환하고 for-each문을 통하여 배열에 있는 단어들을 뒤집고 add를 이용하여 리스트에 추가하고 반환한다.

import java.util.*;
class Main {	
	public ArrayList<String> solution(int n, String[] str){
		ArrayList<String> answer=new ArrayList<>(); 
		for(String x : str){
			String tmp=new StringBuilder(x).reverse().toString();
			answer.add(tmp);
		}
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		String[] str=new String[n];
		for(int i=0; i<n; i++){
			str[i]=kb.next();
		}
		for(String x : T.solution(n, str)){
			System.out.println(x);
		}
	}
}

(2) 길이를 이용하여 직접 하나씩 바꾸기

for-each문을 이용하여 단어를 받고 char 배열로 저장하고 직접 뒤집어 add()를 이용하여 리스트에 추가하고 반환하여 준다.

import java.util.*;
class Main {	
	public ArrayList<String> solution(int n, String[] str){
		ArrayList<String> answer=new ArrayList<>(); 
		for(String x : str){
			char[] s=x.toCharArray();
			int lt=0, rt=x.length()-1;
			while(lt<rt){
				char tmp=s[lt];
				s[lt]=s[rt];
				s[rt]=tmp;
				lt++;
				rt--;
			}
			String tmp=String.valueOf(s);
			answer.add(tmp);
		}
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		String[] str=new String[n];
		for(int i=0; i<n; i++){
			str[i]=kb.next();
		}
		for(String x : T.solution(n, str)){
			System.out.println(x);
		}
	}
}

<중요>

1) List

  • 단어의 중복이 있을 수 있고,순서가 있다
  • 사용하기 위해서는 List< String > list = new ArrayList<>( );
  • 추가하는 방법 - ex) list.add("hi"); / 크기를 구하는 방법 - ex) list.size( );

2) StringBuffer

  • String은 불가변성인 것과 다르게 StringBuffer은 가변적이다
  • 문자열 추가나 변경등의 작업이 많을 경우에는 StringBuffer을 사용하는 것이 유리하다
  • StringBuilder sb = new StringBuilder( );
    (1) 문자열 추가 : append - sb.append("hello");
    (2) 원하는 위치에 삽입 : insert - sb.insert(0, "hello ");
    (3) 원하는 위치만 출력 : substring : System.out.println(sb.substring(0, 4));

3) char배열을 String으로 저장

  • char [ ] s = x.toCharArray[ ];
    String tmp = String.valueOf(s);
profile
joy_study

0개의 댓글