알고리즘(Algorithm)

[Algorithm] 단어 뒤집기

XDXDX 2023. 3. 13. 17:09

1. 문제

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

첫 줄에 자연수 N(3 <=N <=20)이 주어집니다.

두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.

2. 예시

3
red
blue
yello

der
eulb
olley

3. 코드

내가 제일 처음 만들어본 코드는 StringBuilder를 사용한 것이다.

 

StringBuilder 사용

  1.  StringBuilder 메서드 중 reverse()를 사용하면 간단하게 해결할 수 있다.
  2. 3개 이상의 단어를 입력해서 결과를 받아와야 하므로 ArrayList를 사용
  3. 향상된 for문을 사용해서 단어의 개수만큼 돌리고 ans.add(st)로 담아 리턴 시킨다.

char 배열로 나눠 뒤집기

  1. for문안에 char 형식의 배열을 만든다. -> ch
  2. 뒤집은 단어를 담을 빈 배열도 하나 만든다. -> re
  3. 예시
    1. 단어 하나를 예를 들어보자. apple
    2. 뒤집은 단어는 elppa가 리턴돼야 한다.
    3. ch.length -> 배열로 나눈 apple의 길이는 5이므로 5만큼 for문을 돌린다.
    4. re [0] = ch[5-1-0] -> re[0] = ch[4] -> re[0] = 4
    5. re [0]에는 4번째 문자인 e를 저장한다.
    6. 위 방식으로 for문을 5번 돌리면 e, l, p, p, a로 뒤집히게 된다.
  4. char배열을 string으로 변환할 수 있는 메서드 -> String.valueOf();
  5. ArrayList로 담아 리턴하면 성공

4. 마무리

StringBuilder 사용하고 '오, 이번엔 문제 꽤나 괜찮은걸? 엄청 간단하잖아?'라고 생각하기 무색하게 문자를 배열로 나눠 하나씩 뒤집는 방법이 있었다. 처음엔 왜 이렇게 복잡하게 만들까 생각했는데 웬걸.. 오히려 저렇게 쓰는 게 더 좋은 방식이잖아..?

아직 이 부분에 대해 이해하려면 시간이 꽤 걸리지 않을까 싶다.

 

그렇지만 난 어쨌든 풀었고 모르는 게 넘쳐나면 이곳에 기록하면서 공부하면 된다는 것.

'알고리즘(Algorithm)' 카테고리의 다른 글

[Algorithm] 중복문자제거  (0) 2023.03.24
[Algorithm] 특정 문자 뒤집기  (0) 2023.03.23
[Algorithm] 문장 속 단어  (0) 2023.03.10
[Algorithm] 대소문자 변환하기  (0) 2023.03.07
[Algorithm] 문자열 찾기  (0) 2023.03.06