-
[Python] 백준 : 1차원 배열코딩테스트/백준 2024. 3. 18. 15:07
# 10,807 : 개수 세기
[문제 풀기 전 생각한 부분]
1. 여러 숫자를 입력을 받고
2. count를 이용해서 찾으면 되겠다.
[my_code]N = int(input()) find_v = map(int,input().split()) v = int(input()) print(find_v.count(v)) # ex) v=2, find_v안에서 2의 개수를 세라
[문제점]1. map 객체는 리스트처럼 인덱싱이나 '.count()'와 같은 리스트 메소드를 직접 사용할 수 없다.
2. N의 쓰임이 없다.
[문제점 해결]1. map 객체를 리스트로 변환하여야만 리스트 메소드를 사용할 수 있다.
N = int(input()) find_v = list(map(int, input().split())) v = int(input()) print(find_v.count(v))
[B1]
# 문자열 처리함수 # python = "Python is Amazing" # print(python.lower()) # lower 소문자처리 # print(python.upper()) # upper 대문자처리 # print(python[0].isupper()) # python 첫번째 글자가 대문자냐 # print(len(python)) # 공백 포함 몇자냐 # print(python.replace("Python","Java")) # reaplace 특정문자를 다른걸로 바꿔줌 # index = python.index("n") # 첫번째 n만 찾아줌 # print(index) # index = python.index("n",index +1) # 두번째 n만 찾아줌 # print(index) # print(python.find("java")) # 찾는 글자가 없으면 -1 출력 # #print(python.index("java")) # 찾는 글자가 없으면 오류 출력 # print(python.count("n")) # n이 총 몇번 등장하는지
# 10,871 : X보다 작은 수
[문제 풀기 전 생각한 부분]
1. 엥 저게 수열인가?
2. for문을 사용해야겠다.
[my_code]import sys input = sys.stdin.readline # 너무 안쓰면 까먹을거 같아서 한번 써먹었다. N,X = map(int,input().split()) # N,X 를 입력 받고 A = list(map(int,input().split())) # A를 list에 저장하고 for i in range(N): if A[i]<X: # 입력 받은 순서대로 출력 print(A[i])
[문제점]1. 출력을 해보면 줄바꿈(엔터)로 하나씩 출력된다.
[문제점 해결]1. print()안에 end=' '를 넣어주면 된다.
import sys input = sys.stdin.readline N,X = map(int,input().split()) A = list(map(int,input().split())) for i in range(N): if A[i]<X: print(A[i],end=' ') # 수정한 부분.
# 10,818: 최소, 최대
[문제 풀기 전 생각한 부분]
1. 입력을 받고 최소 최대를 출력하면 되겠구나..
[my_code]import sys input = sys.stdin.readline N = int(input()) A = list(map(int,input().split())) print(min(A),max(A)) # 최솟값, 최댓값 출력.
# 2,562 : 최댓값
[문제 풀기 전 생각한 부분]
1. 하나씩 입력을 어떻게 받을 수 있더라...
[my_code]
import sys input = sys.stdin.readline A = list(map(int,input().split())) # 이렇게 되면 문제와 달리 공백으로 구분한다. index = A.index(max(A)) # 안에서 최대값을 찾아낸다 print(max(A)) print(index)
[문제점 first commit]
1. index는 0부터 시작함으로 +1을 해주어야함.
2. 입력을 서로 다른 9개의 자연수만 받아야되는 데 공백을 기준으로 받아버림
3. 공백을 기준으로 무한대로 받아버림
[문제점 second commit]
1. A가 정수로 재할당되어서 마지막에 입력된 값만 가지게 된다. 반복문이 종료된 후에만 A의 값이 유지되기 때문에 최종 입력 값만 가지게 됨.
.2 A.index(max(A)를 호출하는 데 , A는 정수이므로 index() 함수를 사용할 수 없다.
import sys input = sys.stdin.readline for _ in range(9): # 공백 기준 x , 줄바꿈으로 입력받음. A = int(input()) index = A.index(max(A)) # A의 최댓값이 어디에 위치 하는 지 print(max(A)) # A의 최댓값을 출력해라. print(index+1) # A의 최댓값의 인덱스를 출력해라 . 1부터 시작함으로 +1
[문제점 해결]
import sys input = sys.stdin.readline A = [] # 사용자가 입력한 여러개의 값을 저장하기 위한 공간. (리스트) # + 코드에서 리스트로 사용하려면 먼저 A 리스트로 초기화. # + 없다면 A는 정의되지 않은 변수로 프로그램이 A를 찾을 수 없음. for _ in range(9): num = int(input()) # 9번 입력을 사용자로부터 받을 것이다. A.append(num) # A = []에 하나씩 추가한다. ...9번 index = A.index(max(A)) # A의 최대값을 찾아라. print(max(A)) print(index+1)
# 10,810 : 공 넣기 #10813 공바꾸기 생략
[문제 풀기 전 생각한 부분]
[my_code]
[문제점]
[문제점 해결]# 5,597 : 과제 안 내신분..?
[문제 풀기 전 생각한 부분]
1. 입력을 총 28줄로 주어진다.2. 출력은 2줄로 1번째줄엔 안한 놈중 가장 적은 출석번호3. 어떤 알고리즘으로 접근해야될까4. 일단 범위를 1~30 , 고정에 중복없이면 튜플이나 집합 괜찮겠네5. 그리고 안쓴놈은 어떻게 찾지 if? while?6. 입력 받은 놈들을 저장하고 전체 집합에서 지우고7. 거기서 최소와 최대를 출력하면 되겠다.
[my_code]# 1~30번 까지 학생들 all_student = [i for i in range(1,31)] # print(all_student) # good student 저장할 공간 good_student = 0 # 과제를 제출한 학생들 입력 받기 for n in range(1,29): good_student = int(input()) all_student.remove(good_student) print(min(all_student)) print(max(all_student))
[문제점]
[문제점 해결]
# 3,052 : 나머지
[문제 풀기 전 생각한 부분]
'''1. 입력을 각 줄에 받고2. 42로 나눈 나머지를 구한다.3. 서로 다른 값이 몇 개 있는 지 출력하는 프로그램'''
[my_code]for i in range(10): A = int(input()) print(A) result = 0 for _ in range(A): result = A % 42 print(len(result))
[문제점]1. 리스트로 받았는 데, 중복을 허용한다. 따라서 중복을 허용하지 않는 집합으로 바꿔줘야됨.
2.
[문제점 해결]# arr 초기화 : 빈 상태에서 시작하므로 나중에 혼돈이 없다. arr = [] for i in range(10): # 10번 반복 A = int(input()) # 사용자로부터 정수를 받고 arr.append(A % 42) # 입력값을 42로 나눈 나머지를 계산한 후 나머지를 리스트 arr에 추가 arr = set(arr) # 리스트 'arr'을 세트로 변환하여 중복을 제거 print(len(arr)) # 세트의 길이를 출력하여 서로 다른 나머지의 개수를 표시
[learn more]
# 10,811 : 바구니 뒤집기
[문제 풀기 전 생각한 부분]
[my_code]
[문제점]
[문제점 해결]# 3,052 : 평
[문제 풀기 전 생각한 부분]
'''1. 몇개의 과목을 봤는 지 입력2. 각 과목에서 최고점을 찾고3. 각 과목을 최고점과 나누고 100을 곱한다.4. 각각의 값을 다 더하고 N(몇개의 과목을 봤는지)으로 나누어 평균을 구한다.'''
[my_code]# 몇개의 과목을 봤는 지 n = int(input()) # # 과목수 만큼 점수를 받는다. # score = [i for i in range(n)] # # 최고점을 찾는다. # max_score = score.max() a = 0 for i in range(n): score = map(int,input().split()) max_score = score.max() a = score / max_score *100 print(a)
[문제점]1. 저장된 각 값을 어떻게 더하지 ?
2. 최대값 저장하는 부분이 틀렸다.
[문제점 해결]
# 과목 수 입력 subject = int(input()) # 각 과목의 점수를 리스트로 입력받음 scores = list(map(int, input().split())) # 최고 점수를 찾음 M = max(scores) # 각 점수를 최고 점수로 정규화하여 백분율로 변환 for i in range(subject): scores[i] = scores[i] / M * 100 # 정규화된 점수들의 평균을 계산하여 출력 print(sum(scores) / subject)
'코딩테스트 > 백준' 카테고리의 다른 글
[Python] 백준 10,818 : 최소, 최대 (0) 2024.06.19 [Python] 백준 3,460 : 이진수 (0) 2024.06.06 [Python] 백준 : 조건문 모음집 (두 수 비교하기 이후부터) (1) 2024.01.27 [Python] 백준 : 반복문 모음집 (1) 2024.01.27 [Python] 백준 : 조건문 1,330번, 두 수 비교하기 (0) 2024.01.22