본문 바로가기

알고리즘/인프런

섹션 1. String(문자열)_5. 특정 문자 뒤집기

문제

  • 영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
  • 특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.

입력

  • 첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다.

출력

  • 첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다.

입출력 예제


처음에 문제를 보고 아스키코드를 사용해서 풀어야하나.. 하고 이것저것 건들어보다가 강의를 듣고 다시 풀어보았다.

 

풀이 방식은 다음과 같다.

 

main에는 문자를 입력받고, 메소드를 수행하는 코드를 작성한다.

 

메소드를 구현해보자.

결과값을 담을 변수인 result를 선언한다.

 toCharArray() 를 이용해서 word에 입력된 문자열을 문자 하나씩 분리해서 문자 배열을 생성하도록 한다.

  • toCharArray : 문자열을 한 글자씩 쪼개서 char타입의 배열에 넣어주는 메소드

단어 양 끝의 인덱스를 저장할 변수 left, right 를 선언한다.

이 때 right는 단어 길이 -1 을 통해 맨 마지막의 인덱스 값을 설정한다.

(인덱스는 0부터 시작하기에 -1 을 해야 올바른 인덱스 값이 나온다.)

 

while 문을 통해 left 값이 right 변수 값보다 작아지기 전까지 반복을 돌린다.

이 때 if - else if - else 문을 통해서 영문자의 여부를 확인하게 된다.

isAlphabetic 메소드를 사용해서 left / right 가 영문자인지를 확인한다.

  • isAlphabetic : Character에 내장되어있는 클래스 중 하나로, 영문자를 판단하여 true/false를 반환한다.
  • isDigit : 숫자를 판단하여 true / false를 반환한다.

영문자가 아니라면 다음 인덱스 번호를 탐색한다.

만약 left, right 가 전부 영문자라면 else 안에 코드를 수행한다.

 

임의의 값을 담을 변수 tmp를 선언하고, 해당 변수에 left에 들어간 영문자를 넣어준다.

그 다음으로는 left 변수에 right 에 들어간 영문자를 넣어준다.

마지막으로 맨 처음 left 값을 넣어준 임의의 변수 tmp에 들어간 영문자를 right 변수에 넣어준다.

이렇게 함으로써 기존에 left 에 있던 변수가 right 로, right에 있던 변수가 left로 바뀌게 된다.

 

값 변경이 되었다면 다음 문자를 찾기 위해 인덱스 값을 수정한다.

 

마지막으로 valueOf 를 통해 Alphabet 변수에 들어간 결과값을 String 형태로 변환해준다.

  • valueOf : 괄호 안에 입력한 객체를 String 형으로 변환한다.

수행 결과를 확인한다.


해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.