-
[백준] 1157 단어 공부Algorithm Study/Python 2024. 11. 13. 23:44
https://www.acmicpc.net/problem/1157
풀이
이번 문제는 어려운 문제는 아니지만 재밌는 방법으로 풀어봤다.
먼저 나온 1~9까지의 숫자, 알파벳의 갯수를 세아리는 가장 큰 방법은 list나 dictionary를 활용하여 세아리는 것이다.
해당 index를 값으로 value를 갯수로 표시하면 쉽게 구현할 수 있다.N = input() A = N.upper() a = list(A) #print(a) # a = ['ZZA'] x = [] # 처음 등장한 값인지 판별 for i in a: if i not in x: # x= [Z A] x.append(i) duple = [] for i in x: #[Z] k = a.count(i) #a = ['ZZA'] Z의 개수 = 2 duple.append([k, i]) #duple = [2] duple = sorted(duple, reverse=True) if len(duple) == 1: print(duple[0][1]) elif duple[0][0] == duple[1][0]: print("?") else: print(duple[0][1])
내가 푼 방법을 먼저 코드부터 보여주면 나온 데이터들만 체크하기 위해서 알파벳의 종류를 체크한다.
알파벳의 종류를 임시로 넣어둘 공간을 만들어서 해당 리스트에 있는 경우 무시 없는 경우 추가하는 방식으로 했다.알파벳은 최대 26글자이기 때문에 26번 안의 탐색이 완료된다.
이제 찾은 단어의 갯수를 매핑시키기 위해 값이 2개인 리스트를 생성하여 문자에서 해당 갯수를 세아려 알파벳의 종류 갯수를 리스트에 추가했다.
이렇게 만들어진 리스트를 숫자 기준으로 내림차순으로 정렬한 뒤
만약의 결과 리스트의 길이가 1이면 1개의 알파벳만 존재하는 것이기 때문에 해당 값을 출력하면 되고
리스트 0번의 갯수와 1번의 갯수가 동일하면 ? (최대값이 동일한 경우)
그 이외의 경우에는 리스트 0번의 값을 출력하면된다.쉬운 방법을 두고 억지로 풀어서 사실 시간적으로 더 손해를 봤다...
이 문제를 선택한 이유도 영어와 일본어 공부를 했었는데 최근 안하다보니 단어를 자꾸 잊어서 다시 해야겠다는 의미로 한번 풀어봤다.'Algorithm Study > Python' 카테고리의 다른 글
[백준] 0000번 XXXX (수정용) (0) 2024.11.21 [백준] 16165번 걸그룹 마스터 준석이 (0) 2024.11.11 [백준] 7785번 회사에 있는 사람 (0) 2024.11.10 [백준] 10431번 줄세우기 (0) 2024.07.17 [백준] 1009번 설탕 배달 (0) 2024.07.11