코딩못하는사람

1339 단어수학 본문

백준 문제풀이(JAVA,Python)

1339 단어수학

공부절대안함 2021. 2. 22. 21:16

www.acmicpc.net/problem/1339

 

1339번: 단어 수학

첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대

www.acmicpc.net

1.접근

각 알파벳에 자리수를 곱해서 가장 큰 값부터 9를 할당해서 문제를 푸는 그리디 문제이다

2.풀이

알파벳을 한줄 씩 입력받을 때 마다 자릿 수를 곱해서 Map에 저장한다.

예를들면  ABC는 A에 100, B에 10, C에 1을 더하는 것이다.

이렇게 map을 만들고 value값이 가장 큰 순으로 정렬해서 9부터 1씩 줄여가며 곱해서 답을 출력한다.

3.코드

 

4.배운점

(1)Map에서 value값에 따라 정렬하는 방법

기존 정렬 방식과 다른 value값을 통한 정렬이므로 Map의 keySet을 ArrayList로 만들고

그 ArrayList를 새로운 Comparator을 선언하여 compare메서드를 override해주었다.

value값이므로 M.get(o1).compareTo(M.get(o2))로 정의하면 오름차순

M.get(o2).compareTo(M.get(o1))로 정의하면 내림차순이 된다.(이 문제에서는 내림차순)

 

(1)Math.pow()를 통해서 거듭제곱을 나타낼 수 있다.

pow(2,5)=32.0 ==>2^5   (double 형으로 나온다)

Comments