ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2/7기록 - 백준 2941
    Algorithm 2022. 2. 7. 17:19
    728x90

    요즘 Kotlin기반의 Android Studio 프로그래밍과 앱인벤터를 활용한 앱 제작을 공부중이라 상당히 빠듯하지만 이건 좀 갖추어졌다 할 때 포스팅 하기로 하고 짬을 내어 푼 문제를 포스팅 하려 한다.

     

    오늘의 문제는 백준 2941 크로아티아 알파벳 문제이다.

     

     

    문제는 이러하다. 처음 문제를 읽으면 외계문자같은 것들에 당황하여 가독성이 상당히 떨어진다. 나도 세번 정도 반복해서 읽으니 무슨 말인지 알 것 같았다. 따지고 보면 상당히 쉬운데, 표 안의 크로아티아 문자들을 다른 문자로 나타내어 총 크로아티아 문자가 몇개나 사용되었는지 체크하는 프로그램을 구현하는 것이다.

     

    알고리즘 생각

    <맨 처음 생각>

    1. c=, c-, dz=, d- 등을 통해 "=","-" 일 때를 chatAt()과 equals 메소드를 사용하여 다 나누어준다.

    2. 해당 경우 마다 count변수를 한 칸 or 두 칸씩 경우에 맞게 증가시켜 주고, 최종 count 변수를 출력한다.

     

    이렇게 생각을 하고 보니 인간적으로 경우가 제법 되어서 인간적으로 노가다는 하지 말자는 생각으로 다른 방식을 생각해 보기로 했다.

     

    <최종 생각>

    1. 입력 받을 문자열을 str 변수에 담아준다.

    2. arr배열 하나를 선언하여 크로아티아 문자들을 모두 배열 초깃값으로 지정한다.

    3. 반복문 안에서 str변수에 arr배열이 포함되어 있다면 str변수에서 arr배열 값을 특정 문자 하나로 치환한다.

    4. str변수의 길이를 출력한다.

     

    3번의 생각에서 contains() 메소드와 replace(~~,~~) 메소드를 사용했다.

     

     

    정말 간단하게 해결할 수 있었다. 여기서 주의 해야 할 마지막 한 가지는 replace 메소드를 사용할 때 특정 문자를 무엇으로 할 것이냐이다. 처음에 j로 했더니 arr배열안의 문자들에 j가 포함되어 있어 잘못된 값이 출력되었다. arr배열안의 문자와 겹치지 않는 문자 하나로 arr[] 배열에 속하는 문자열을 모두 바꿔주고 str의 길이를 출력하게 되면 쉽게 해결이 가능하다.

     

    하나의 예시로 예제 입력 3을 보면 nljj -> npj로 바뀌는 셈이다. npj는 최종 str 값이 되고 이 길이는 3으로 정답이 출력된다.

     

     

    해결 완료

     

    2/7 기록 끝!!!!!!!!

    728x90
Designed by Tistory.