ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1/18기록 #2 - 백준 1159
    Algorithm 2022. 1. 18. 10:21
    728x90

    생각보다 이전 문제가 너무 빠르게 해결이 되어서 한 문제를 더 풀어 보기로 했다. 

    이번 문제는 백준 1159번 문제

     

     

    농구경기 문제이다. 잡다한 설명들은 제외하고 맨 처음 알파벳이 5개 이상인지 아닌지를 판단하면 되는 문제이다.

    2학기 자바프로그래밍 중간고사에서 알파벳 문제가 대놓고 나온 적이 있어서, 아스키 코드 값을 시작 지점은 기억하고 있었다. a는 97이란거, 그리고 알파벳은 총 26개라는 거... 사실 이거만 알면 문제 길이에 비해 너무 간단했다.

     

     

    알고리즘 생각.

    1. 26크기의 알파벳을 담을 수 있는 배열을 선언.

    2. 반복문을 돌릴 N을 입력 받고, N크기의 for문을 만들어 String 변수에 수 많은 알파벳을 담아줌.

    3. 변수.charAt(0) 메소드를 이용하여 문자열의 제일 처음 문자를 불러와서 97과 조작해줌.

    4. 26크기의 반복문과 if문 안에서 같은 문자가 5개 이상인지 아닌지를 판단.

     

     

    charAt() 메소드를 이용하는 부분이 포인트 인데, str.charAt(0) - 97을 해주면 a는 0, b는 1 이런식으로 인덱스가 담기기 때문에, alphabet[] 배열을 ++ 해줄 경우 처음부터 끝까지 모두 조사할 수 있다. 97을 빼주지 않으면 ArrayIndexException 에러가 발생한다. 이까지는 쉽게 했는데, 생각보다 출력문에서 조금 애를 먹었다. PREDAJA의 경우 한 번만 적혀야 하므로 반복문 안에 있으면 안 될 것 같았지만 어떻게 적어야 할지 감이 안 와서, 반복문 안에 넣고 return이나 break로 조절을 해 보려 했다. 하지만 결론은 5이상인 경우에서도 출력이 PREDAJA가 되는 것을 보고 꽤 고민을 했던것 같다. 그러다 문득 boolean 방식이 떠올라서 지금 처럼 true와 false로 조절했더니 정답!!!

     

    이렇게 해결했다.

    여행을 다녀와서 부터는 이제 브론즈 1로 승급해서 문제 풀이를 진행해 봐야 겠다.

    오늘 승급전 성공한 느낌 ㅎㅎ

     

    1/18 기록 끝!!!!!

    728x90
Designed by Tistory.