ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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)
Designed by Tistory.