10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 import sys input= sys.stdin.readline t = input() a = list(map(int,input().rstrip().split())) print(min(a),max(a)) 가장 간단하게 생각하면 그냥 min, max 함수를 쓰면 된다. 그런데 이렇게 한다면 정말 기적적으로 연산속도가 느려지는 걸 볼 수 있다. 왜일까? 이는 파이썬이 인터프리터 언어기 때문에 min과 max를 계산할 때 전부 ..
10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 풀이 s = input() for i in range(97,123): print(s.find(chr(i)),end =' ') chr 함수는 숫자 i가 주어졌을 때 아스키 코드에 해당하는 알파벳을 반환한다. find 메소드는 해당 문자열에서 몇 번째에 있는지 인덱스를 반환한다. (없다면 -1을 반환) 주어지는 알파베시 전부 소문자이므로, 아스키 코드는 97부터 123이다. 따라서 위와 같이 find(문자열(아스키 코드 97~123))을 대조해서 출력해주..
10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 풀이 간단하게 생각해보면 넓이 W는 의미가 없다. 왜냐하면 엘레베이터에서 가까운 순으로 번호가 채워지고, 결국엔 H부터 앞으로 채워지는 형태이기 때문이다. 따라서 손님이 채워지는 구조는 H만큼을 반복하는 패턴이 될 것이다. 따라서 몫과 나머지 문제라고 할 수 있다. 그렇다면 n을 h로 나눈 뒤, 몫으로 호수를 정하고(n번째 손님이 오면, 최대 층까지 이미 몇번이나 채워졌느냐) 나머지(몇 층까지 채워졌느냐)로 층수를 구하면 된다. 이때 나머지는 100을..
8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 풀이 t = int(input()) # 테스트 케이스의 개수 k = [input() for i in range(t)] # 각 테스트 케이스를 리스트로 만들어준다. for i in range(t): if k[i][0]=='O': #각 테스트 케이스의 첫번째가 O인지 판별 num=1 #O면 점수 1 count=1 else: num=0 #X면 점수 0 count=1 for j in range(len(k[i])-1): #각 테스트 케이스의 길이까지 ..
3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 풀이 n = [int(input())%42 for i in range(10)] print(len(list(set(n)))) 수를 10개 입력받는다고 못 박아 놓았으므로, range 10은 자명하게 쓸 수 있다. 따라서 리스트 컴프리헨션을 통해 각각의 input()을 정수형으로 받아 출력해주면 된다. 이때, 서로 다른 값으로 만들어야 하므로 set으로 중복을 없애 주고 리스트로 만들어 세어주면 된다. 만약에 극한으로 코드를 줄이면 다음과 같이 쓸 수 있다. print(len(list(set([int(input())%42 for _ i..
2920번: 음계 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8 www.acmicpc.net 풀이 소프티어에서 8단 변속기 문제와 완벽히 일치한다. 한 번 읽고 온다면 도움이 될 것이다. https://softeer.ai/practice/6283 이 문제에서 요구하는 개념은 간단하다. 1. 8부터 1까지 반대로 나열할 수 있느냐? 2. 만약 나열이 가능하다면, 그 나열된 리스트들이 순서대로 되어 있는지 확인할 수 있느냐? 그렇기에 설명을 위해 풀어 쓴 코드는 다음과 같다. a = list(map(int,input..