import sys
import math
import heapq
import collections
import itertools
import bisect
import random







sys.stdin.readline() 간략화
import sys
input = sys.stdin.readline
n = input() # sys.stdin.readline 써짐
if s == "hello": # "hello\n" 이라서 조건 실패 -> 대참사
strip()함수로 양쪽 공백 & \n 제거해줄 수 있음
몇문제 풀어보자
n,k = map(int, input().split())
arr = list(map(int, input().split()))
arr.sort(reverse=True)
print(arr[k-1])
막힌 부분
n,k는 변수로 각각 split해서 들어가니까 list(map())을 해줄 필요가 없었는데 arr은 list로 써서
sort를 써야하기 때문에 list화를 해줘야함
import sys
n = int(sys.stdin.readline())
arr = list(map(int, sys.stdin.readline().split()))
m = max(arr)
for i in range(n):
arr[i] = arr[i] / m*100
avg = 0
for i in range(n):
avg += arr[i]
avg /= len(arr)
print(avg)
막힌 부분
for i in arr: <- 원본 수정이 안됨
i는 arr의 값 복사본임 -> 수정해도 arr에 영향 없음
원본 배열 수정하려면? for i in range(len(arr))으로 쓰고 i를 idx값으로 사용
arr.count(2) : 2가 몇번 나왔는지 세워줌(문자열도 됨)
arr.max() -> X, max(arr) -> O
avg = 0 # 이걸로 초기화를 안하면 NameError 발생
for i in range(len(arr)):
avg += arr[i]
계산식 오류
arr[i] = arr[i] / m 100 # 정답
arr[i] /= m 100 # 잘못된 계산
이유 : 연산자 우선순위 때문에 m*100이 먼저 계산됨 -> arr[i] / m을 먼저 해야함
sum(arr) -> 리스트 합
len(arr) -> 리스트 길이
avg = sum(arr) / len(arr)
import sys
# n = 일의 개수, t = 분
n,t = map(int, sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))
time = 0
count = 0;
for i in range(n):
time += arr[i]
count += 1
if(time > t):
time -= arr[i]
count -= 1;
break
print(count)
막힌 부분
range() 요소 start는 안쓰면 0이지 1이 아님 step은 1,
FCFS 문제에서 한 작업 더 실행되는 문제
숫자가 1 더 크게 나옴 -> 넘치는 시간이랑 카운트를 다시 빼줘서 해결
import sys
n = int(sys.stdin.readline())
for i in range(n):
arr = sys.stdin.readline()
length = len(arr)
left_idx = length // 2 -1
right_idx = length // 2
#print(f"left_idx = {left_idx}, right_idx = {right_idx}")
if(arr[left_idx] == arr[right_idx]):
print("Do-it")
else:
print("Do-it-Not")
막힌 부분
/ 연산자는 항상 실수 반환 4.0,, 그래서 //연산자로 수정
01010101 일때 대충 봐서 0 1 0 1 0 1 0 1라고 보고 숫자 배열로 풀어서 문자 배열로 수정
import sys
li = sys.stdin.readline
t = int(li())
for i in range(t):
n = int(li())
arr = list(map(int,li().split()))
print(min(arr), max(arr))
막힌 부분
sys.stdin.readline 간략화하려다가 ()차이로 오류난거 수정
import sys
li = sys.stdin.readline
a = li().strip()
a = list(map(int, a.split(",")))
print(sum(a))
막힌 부분
10,20,30,50,100
이 형식이니까 ,기준으로 split해야하는데 그냥 split() <- 공백기준으로 나누기 때문에 틀렸음
import sys
li = sys.stdin.readline
c = int(li())
for i in range(c):
arr = list(map(int, li().split()))
n = arr[0]
arr.pop(0)
avg = sum(arr) / len(arr)
avg_person_count = 0
for i in arr:
if(avg < i):
avg_person_count += 1
ans = (avg_person_count / n) * 100
print(f"{ans:.3f}%")
막힌 부분
비율 공식

소수점
print(f"{ans:.3f}%")
ans <- 변수
:.3f <- 소수점 아래 3자리까지
조건이 하나라도 True면 → any() 전체가 True 반환
전부 False면 → False 반환