목록코딩테스트/파이썬 (39)
100세까지 코딩

문제 나의 생각 N이 1000까지 가면 입력되는 수가 많으니 sys.stdin.readline()을 사용하여 입력 속도 증가 시킨다. 평균이므로 list에 점수를 다 입력하고 합계를 구한다. 평균: 문제 요구조건에 따라 합계 / M * 100 / 원소의 개수 파이썬인 만큼 빌트인 함수를 써서 짧고 빠르게 구현한다. 나의 풀이 import sys N = int(input()) score_list = list(map(int, sys.stdin.readline().split())) sum = 0 for i in score_list: sum += i result = sum / max(score_list) * 100 / len(score_list) print(result) 새롭게 알게 된 풀이 import sys..

문제 나의 생각 투 포인터를 쓴다. 시작값인 i는 오른쪽으로 전진. 즉 i+=1 끝값인 j는 왼쪽으로 전진. 즉 j-=1 시작값이 끝값과 같거나 커지면 종료. 즉 끝값이 시작값보다 큰 경우까지만 반복. while j > i 나의 풀이 N, M = map(int, input().split()) number_list = [i for i in range(1, N + 1)] for _ in range(M): i, j = map(int, input().split()) while j > i: number_list[i - 1], number_list[j - 1] = number_list[j - 1], number_list[i - 1] i += 1 j -= 1 print(*number_list) 새롭게 배운 풀이 N,..

문제 나의 생각 서로 다른 값을 저장할 수 있게 중복을 삭제해 주는 set() 자료형을 사용한다. set의 add() 내장함수를 사용하여 set에 하나씩 요소를 추가해준다. len() 내장함수를 사용하여 set의 길이를 출력하면 서로 다른 나머지 개수 출력 가능. 나의 풀이 number_set = set() for i in range(10): number_set.add(int(input()) % 42) print(len(number_set)) 숏코딩 print(len(set([int(input()) % 42 for _ in range(10)]))) 참고 1. set 함수 수학에서의 집합과 비슷하다. 중복제거, 교집합, 합집합, 차집합과 같은 연산 가능하다. 순서가 없으며, 원소의 위치나 삽입 순서를 알지..

문제 나의 생각 list를 번호에 맞게 초기화한다. swap을 시킨다. 나의 풀이 N,M = map(int,input().split()) bucket_list = [i for i in range(1,N+1)] for _ in range(M): i,j = map(int,input().split()) temp = bucket_list[i-1] bucket_list[i-1] = bucket_list[j-1] bucket_list[j-1] = temp print(*bucket_list) 참고 1. 리스트 초기화 방법 - 리스트 컴프리헨션 (i를 활용하여 여러 방법 가능, if문도 사용 가능) bucket_list = [i for i in range(m)] - 언팩킹 (0~m-1까지 순서대로 저장) bucket_..

문제 나의 생각 반복을 통해 list에 입력된 값들을 받는다. 한 줄에 하나의 자연수가 주어질 때는 append()로 하나하나 추가. 최댓값은 max() 함수를 쓰고, 몇 번째 수인지를 찾는 것은 index()를 사용한다. index는 0부터 시작하므로 + 1을 해준다. 나의 풀이 temp_list = [] for i in range(9): temp_list.append(int(input())) max_value = max(temp_list) print(max_value) print(temp_list.index(max_value)+1)

문제 나의 생각 list를 순회해가며 X보다 작을때마다 출력을 해준다. 연이어 출력을 해야하기 때문에 end = " "를 해준다. 나의 풀이 N,X = map(int,input().split()) number_list = list(map(int,input().split())) for i in range(N): if X > number_list[i]: print(number_list[i],end=" ") 나의 풀이2 (list에 하나씩 추가) N, X = map(int, input().split()) number_list = list(map(int, input().split())) temp_list = [] for i in range(N): if X > number_list[i]: temp_list.app..