- 생각
3달만에 다시 풀어보았다. 로그인이 안되어있어서 익숙한데 안푼 문제인줄알고 풀었다.
접근방식은 전과 같은 방법으로 접근하였고 결과는 메모리, 시간 모두 더 높게 나왔지만 코드는 비슷했다.
(java8 버전과 java11버전일때의 다른 점인것 같다)
푼 방식은 대문자 알파벳은 26개가 최대라는 점을 이용하여 풀었다.
배열을 26크기로 만든 뒤
N개의 모든 A위치의 값은 0 index에 넣고
N개의 모든 B위치의 값은 1 index에 넣고
.... Z까지 한 뒤 배열을 거꾸로 정렬해준 뒤, 가장 값이 큰 알파벳부터 9, 8, 7 ... 1까지 입력해주면 된다.
- 코드
정답 코드 : 백트래킹 문제였는데 수학적으로 접근하는게 더 좋은 것 같다. 입력은 대문자 알파벳(26개)로 제한되어 있다. int 배열 index에 0~25를 A~Z입력일 때 math.pow(10,자릿수)만큼 더 해준다음 가장 높은 값부터 9~0곱해주며 더 해준다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int []number = new int[26];
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++) {
String temp = br.readLine();
int tmp = 0;
for(int j = temp.length()-1; j >= 0 ;j--) {
number[temp.charAt(j) - 'A'] += Math.pow(10,tmp++);
}
}
Arrays.sort(number);
int result = 0, num=9;
for(int i = 25; i >= 0; i--) {
if(number[i]==0) break;
result+=number[i]*num--;
}
System.out.println(result);
}
}
3달 뒤 혼자 다시 풀어본 코드 : 방식은 위와 비슷한 방식으로 풀었다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
static int answer;
public static void main(String[] args) throws Exception {
SetData();
System.out.println(answer);
}
private static void SetData() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
answer = 0;
int[] array = new int[26];
for(int i = 0; i < N; i++) {
String s = br.readLine();
int temp = 1;
for(int j = s.length() - 1; j >= 0; j--) {
array[s.charAt(j) - 'A'] += temp;
temp *= 10;
}
}
Arrays.sort(array);
int temp = 25;
for(int i = 9; i >= 1; i--) {
answer += array[temp--]*i;
}
}
}
'algorithm' 카테고리의 다른 글
[BOJ/JAVA] 백준 1463번 : 1로 만들기 (0) | 2021.01.05 |
---|---|
[BOJ/JAVA] 백준 17142번 : 연구소 3 (0) | 2021.01.05 |
[BOJ/JAVA] 백준 2448번 : 별찍기 - 11 (0) | 2020.12.24 |
[JAVA] 백준(BOJ) 1941번 : 소문난 칠공주 (0) | 2020.12.23 |
[JAVA] 백준(BOJ) 9466번 : 텀 프로젝트 (0) | 2020.12.23 |