https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 풀이 1 : 아스키코드 변환, count와 index함수를 이용한 풀이 S = input() arr = [0]*26 max_num = 0 index = 0 for i in range(len(S)): if ord(S[i]) >= 97: arr[ord(S[i])-32-65] += 1 else : arr[ord(S[i])-65] += 1 max_num = max(arr) index = arr.index(max_num) if arr.co..
https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 풀이 1 : 아스키 코드를 이용한 방법 S = input() arr = [] for i in range(26): arr.append(-1) for i in range(len(S)): if arr[ord(S[i]) - 97] == -1: arr[ord(S[i]) - 97] = i for i in arr: print(i, end = ' ') 처음에 26가지 값을 -1로 설정하고 ord()..
https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 42로 나눈 나머지를 새로운 리스트에 저장하고, 중복된 값을 제외시키는 과정이 필요하다. 1 : for문을 사용한 풀이법 arr = [] for i in range(10): a = int(input()) if a%42 not in arr: arr.append(a % 42) print(len(arr)) 새로운 리스트에 넣을 a%42(a를 42로 나눈 나머지)가 리스트 arr에 포함되어 있는지 확인하는 과정을 걸친 후, 마지막으로 리스트의 길이를 출력하는 방법. 2 : ..
https://www.acmicpc.net/problem/2920 2920번: 음계 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8 www.acmicpc.net a = list(map(int, input().split(" "))) if a == [1, 2, 3, 4, 5, 6, 7, 8]: print('ascending') elif a == [8, 7, 6, 5, 4, 3, 2, 1]: print('descending') else : print('mixed') 그냥 이렇게 해도 풀리지만 내장되어 있는 함수를 사용해..
https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net *주의! 입력받은 두 수를 각각 거꾸로 뒤집었을 때, 둘 중 큰 값을 출력해야 한다. max() 함수를 이용하면 인자로 던져주는 값들 중 가장 큰 값을 반환받을 수 있다. 풀이 1 : 나눗셈을 이용 a = list(map(int, input().split())) newlst = [] for i in a: n1 = i // 100 n2 = (i - (n1*100)) // 10 n3 = i % 10 newlst...
https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 배열을 이용하는 문제는 항상 시행착오가 있다. 런타임 오류가 나거나 선언을 잘못하거나 값을 잘못 입력하거나 하면 코드가 완전히 다 꼬여버리더라. 이번에는 3가지의 카드를 어떻게 뽑아야 하는지부터 난관이었다. 카드를 뽑는 것이기 때문에 중복은 없어야 했고, 모든 경우의 수를 굳이 다 반복문으로 돌려볼 필요는 없다고 생각했다. 1차 시도 #include int main..