-
백준 1157번 단어 공부 [아스키 코드] :: 마이구미알고리즘 풀이/수학 2016. 6. 28. 16:11반응형
이번 글은 백준 알고리즘 1157번 단어 공부 문제를 풀어보겠다.
문제는 간단하다.
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오.
단, 대문자와 소문자를 구분하지 않는다.
어떻게 접근하겠는가?
사람마다 당연히 다르겠지..?
나는 아스키 코드를 사용해봐야겠다고 생각이 들었다.
아스키 코드를 어떻게 활용해서 문제를 풀 지 한 번 생각해보고 읽기 바란다.
다들 아스키 코드 잘 알고 있을 것이다.
문제에서는 알파벳만을 사용하므로 65번부터 122번 까지만 사용하면 된다.
일단 먼저 크기가 26인 배열을 선언할 것이다.
왜 26만 선언할까?? 눈치 챘을거다. 알파벳의 갯수는 26개이다.
int[] arr = new int[26];
String str = sc.nextLine();
String인 문자열을 하나씩 가져와 반복문을 돌릴 것이다.
charAt() 메소드를 사용하면 된다.
int n = str.charAt(i) 를 이용하면 변수 n은 문자열의 i번째 문자를 얻어 int형으로 아스키코드 번호로 할당되어지게 한다.
그렇다면 a라면 97, b라면 98, c라면 99 이런식으로 얻을 수 있을 것이다.
여기서 97을 빼면 a는 0, b는 1, c는 2 ........
그렇다면 이것을 어떻게 이용할 것인가?
arr[n-97]++ 이런식으로 차례때로 배열에 할당할 것이다. (대문자는 65번부터 시작하므로 n-65)
그렇게 되면 배열의 첫번째는 a의 갯수, 두번째는 b의 갯수 세번째는 c의 갯수가 할당되어질 것이다.
그러면 배열에 각 칸에는 갯수들이 있을테니 활용하면 된다.
내가 푼 방법의 핵심은 저거다 저거저거. 나머지 밑에는 자세히 설명할 것이 없다.
아래의 소스를 통해 이해하길 바란다.
백준 1157번 단어 공부
반응형'알고리즘 풀이 > 수학' 카테고리의 다른 글
백준 10974번 모든 순열 :: 마이구미 (0) 2016.10.25 백준 3053번 택시 기하학 :: 마이구미 (0) 2016.10.18 백준 1010번 다리 놓기 [고등수학 조합] :: 마이구미 (0) 2016.07.27 백준 1834번 나머지와 몫이 같은 수 :: 마이구미 (0) 2016.07.19 백준 1003번 피보나치 함수 :: 마이구미 (1) 2016.06.15