강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

s_megyeong님의 프로필 이미지
s_megyeong

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

1-5 특정 문자 뒤집기

작성

·

230

0

1-5의 특정문자 뒤집기에서 조건문을 검사할 때 s[lt]가 알파벳이면 s[rt] 또한 알파벳이 되어야 뒤집기가 가능한 것이므로 if문을 

if(Character.isAlphabetic(s[lt])) 혹은 if(Character.isAlphabetic(s[lt]) && Character.isAlphabetic(s[rt])) 으로 설정하고

else일 때 특수문자 취급하여 lt과 rt를 각각 ++ , --해주어도 계산 결과는 동일하게 나오는 것으로 판단되는데, 채점 과정에서 어떤 이유로 오류가 뜨는지 궁금합니다ㅠㅠ

답변 2

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

String ans=String.valueOf(s);

위 코드 이전에 while문을 닫는 중괄호를 넣어야 할 것 같은데요. 중괄호가 없어 컴파일 에러가 납니다.

그리고 코드상으로는 lt가 가르키는 곳이 알파벳이고, rt가 가르키는 곳이 특수문자일 경우를 생각해보세요.

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

오류가 나는 풀코드를 보여줘야 제가 오류를 찾을 수 있습니다.

s_megyeong님의 프로필 이미지
s_megyeong
질문자

import java.util.Scanner;

public class Main {

   public static void main(String[] args) {

      

      Scanner sc = new Scanner(System.in);

      String str = sc.next();

      

      char[] s = str.toCharArray(); 

      int lt=0;

      int rt=str.length()-1;

      char tmp;

      

      while(lt<rt) {

         if(Character.isAlphabetic(s[lt]) && Character.isAlphabetic(s[rt])) {  

            tmp=s[lt];

            s[lt]=s[rt];

            s[rt]=tmp;

            lt++;

            rt--;

         } else {

            lt++;

            rt--;

         }

      String ans=String.valueOf(s);

      System.out.println(ans);    

   }

}

위에서 해당 if문입니다!

s_megyeong님의 프로필 이미지
s_megyeong

작성한 질문수

질문하기