-
백준 1157번 단어공부(Python, Java)Baekjoon 2020. 1. 15. 18:07728x90반응형
https://www.acmicpc.net/problem/1157
이 문제를 처음 봤을 때 가장 먼저 떠오른 방법은 key, value를 이용하거나 아니면 그냥 리스트 2개를 만들어서 하나는 알파벳 count 용, 알파벳 저장용으로 만들어서 풀면 되겠다는 생각을 했다. 다행히 좀 비효율적인거 같지만 맞긴 맞았다.
1. 단어 공부 with Python
1234567891011121314151617181920212223name = input()name = name.upper()d = {}l = []for i in range(26):d[chr(65 + i)] = 0for j in range(len(name)):for k in range(26):if chr(65 + k) == name[j]:d[chr(65 + k)] += 1for key in d.keys():if d[key] == max(d.values()):l.append(key)if len(l) > 1:print("?")else:print(l[0])그래도 이런 dictionary 자료형을 연습하는데는 좋았다. d.keys(), d.values() 이런 부분들은 나름 다른 문제에서도 많이 이용됐던거 같아서 잘 써먹으면 좋은거 같다. 하지만 시간이 너무 오래걸리고 좋은 풀이는 아닌 것 같다.
2. 단어 공부 with Java
1234567891011121314151617181920212223public class WordStudy {public static void main(String[] args) {Scanner input = new Scanner(System.in);String s = input.next().toUpperCase();int[] count = new int[26];int max = 0;char result = '?';for (int i = 0; i < s.length(); ++i) {count[s.charAt(i) - 65]++;if (max < count[s.charAt(i)-65]) {max = count[s.charAt(i)-65];result = s.charAt(i);} else if (max == count[s.charAt(i)-65]) {result = '?';}}System.out.println(result);자바는 아직 많이 어색하기 때문에 저렇게 입력받을 때 부터 toUpperCase()를 사용할 수 있다는 부분은 생각해보지 못했는데 좋은 팁을 얻었다. 그리고 아스키코드를 이용하는 방법에 대해서는 조금 더 공부를 해야겠다는 생각이 든다.
(참고로 String을 비교할 때는 equals를 사용한다는 점을 잊지말자)
반응형'Baekjoon' 카테고리의 다른 글
백준 뒤집힌 덧셈 1357번(Python, Java) (0) 2020.01.17 백준 베스트셀러 1302번(Python, Java) (0) 2020.01.15 백준 1152번 단어의 개수(Python, Java) (0) 2020.01.15 백준 1929번 소수구하기(Python, Java) (0) 2020.01.15 백준 10814번 나이순정렬(python) (0) 2020.01.14