띠오니 개발자 성장일지
article thumbnail
반응형

인프런의 "자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비" 강좌를 수강했습니다.

 


들어가기에 앞서..

테스트 환경 - 코드는 백준 & 프로그래머스의 테스트 형태를 지닌다.
main 함수 내부는 백준, solution() 메소드 내부에 실제 기능을 작성하는 프로그래머스의 형태를 따라 테스트한다.

public class Main {
    private int solution(type args1, type args2) {
        int answer = 0;

        // Input your Code.

        return answer;
    }

    public static void main(String[] args) {

        // Scanner sc = ...

    }

}

 


 

Q1-01. 문자 찾기

문자열 하나와 알파벳 하나를 입력 받아, 해당 문자열 안에 알파벳이 몇 개 존재하는지 알아내는 문제
단, 대소문자 상관 없음

 

 

처음 쓴 답

첫 번째는 문자열의 길이만큼 반복해서, 소문자로 바꾼 문자열을 split으로 구분해 자른 알파벳을 문자c와 비교하는 식으로 했다.
이렇게 출력하면 숫자 뒤에 '2%' 와 같이 기호가 달라붙어 출력되어 오답처리가 됐다.

두 번째는 문자열을 소문자로 바꾸고, toCharArray() 를 써서 문자 배열의 값을 비교하는 식으로 했지만,
t의 값이 대문자일 경우에는 카운트하지 못해 오답처리가 됐다.

...

Scanner sc = new Scanner(System.in);

int answer = 0;

String str = sc.next();
String c = sc.next();


for(int i=0; i<str.length(); i++) {
    if(str.toLowerCase().split("")[i].equals(c)){
        answer++;
    }
}

return answer;

...

 

for(int i=0; i<str.length(); i++){
    if(str.toLowerCase().toCharArray()[i] == t){
         answer++;
    }
}

 

 

수정한 코드

강의를 참고하여 아래와 같이 수정했다.

import java.util.Scanner;

public class Main {
    public int solution(String str, char t){

        int answer = 0;

        str = str.toUpperCase();
        t = Character.toUpperCase(t);
        for(char x : str.toCharArray()){  
          if(x == t) answer++;
        }


        return answer;
    }


  public static void main(String[] args){
    Main sol = new Main();

    Scanner sc = new Scanner(System.in);
    String str = sc.next();
    char c = sc.next().charAt(0);   


    System.out.println(sol.solution(str, c));

  }
}

 

 

정리

  • 문자 하나를 입력 받을 땐 charAt(index) 을 이용해 받을 수 있다.
  • `대소문자 구분이 없을 경우`에는, 대소문자 중 하나로 통일시켜주자!
  • 문자열을 한 글자씩 비교하는 등 문자로 분해하기 위해서 string.toCharArray(), string.charAt() 활용하자. (자바 String method 참고)
  • foreach 문을 사용하는 것이 직관적이고, 코드도 단축된다.
  • 주의 foreach 문에는 문자열 자체가 오면 안된다. 배열이나 Iterator Collection 등이 와야한다.

 

 

 


 

반응형
profile

띠오니 개발자 성장일지

@띠오니

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!