ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코딩테스트 스터디 Week3] 백준 - 기초 입출력 문제
    [백준] 2023. 1. 18. 16:09

     

    1) 단어공부 https://www.acmicpc.net/problem/1157

     

    문제

    알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

    입력

    첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

    출력

    첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

     

    >>> 예제

    더보기
    예제 입력 1 
    Mississipi

    예제 출력 1 
    ?

    예제 입력 2 
    zZa

    예제 출력 2 
    Z

     

    문제 풀이

    import sys
    
    alp = sys.stdin.readline().strip()
    alp = alp.upper()
    count_dict = {}
    for i in alp :
        if i in count_dict :
            count_dict[i] += 1
        else :
            count_dict[i] = 1
    count_dict_sorted = sorted(count_dict.items(), key=lambda x : x[1], reverse=True)
    
    answer = count_dict_sorted[0][0]
    
    if len(count_dict_sorted) > 1 and count_dict_sorted[0][1] == count_dict_sorted[1][1]:
        answer = "?"
        
    print(answer)

    >>> print()문과 주석 포함

    더보기
    import sys                           # 입력값 받는 모듈 import
    
    alp = sys.stdin.readline().strip()   # 코딩테스트에서 이 함수를 사용하는 것이 좋다. 끝에 \n이 붙어오기 때문에 strip()필요. str 타입으로 받아온다.
    alp = alp.upper()                    # 받아온 알파벳 단어를 전부 대문자로 변환
    count_dict = {}                      # 갯수를 확인하기 위한 빈 딕셔너리 생성
    for i in alp :                       # 받아온 문자 내부에서 for문
        if i in count_dict :             # 해당 문자가 이미 딕셔너리 key값으로 있다면 
            count_dict[i] += 1           # 그 key의 value에 +1
        else :                           # 해당 문자가 딕셔너리 key값으로 없다면
            count_dict[i] = 1            # key를 생성하고 value를 1로 설정
            
    print(count_dict.items())            # 참고: key와 value를 튜플로 묶어 리스트화한다.
    count_dict_sorted = sorted(count_dict.items(), key=lambda x : x[1], reverse=True)
                                         # 문자 갯수가 저장된 딕셔너리를 value를 기준으로 내림차순 정렬
    print(count_dict_sorted)             # 튜플이 포함된 리스트가 정렬된 것을 확인할 수 있다.
    
    answer = count_dict_sorted[0][0]     # 맨 첫번째 자리의 key 값을 answer에 할당한다.
    
    if len(count_dict_sorted) > 1 and count_dict_sorted[0][1] == count_dict_sorted[1][1]:
        answer = "?"                     # 만약 첫번째 자리와 두번째 자리의 value 값이 같다면,   
                                         # 즉 갯수가 같다면 "?"를 answer에 할당한다.
    print(answer)

     

     

    2) 소수 찾기 https://www.acmicpc.net/problem/1978

     

    문제

    주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

    입력

    첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

    출력

    주어진 수들 중 소수의 개수를 출력한다.

     

    >>> 예제

    더보기
    예제 입력 1 
    4
    1 3 5 7

    예제 출력 1 
    3

     

    문제 풀이

    def primenumber(x):
        for i in range(2, x):
        	if x % i == 0:
            	return False
        return True
    
    import sys
    
    N = int(sys.stdin.readline().strip())
    n_li = list(map(int, sys.stdin.readline().split()))
    count = 0
    
    for i in n_li:
        if i > 1:
            count+=int(primenumber(i))
        else:
            continue
    
    print(count)

    >>> print()문과 주석 포함

    더보기
    def primenumber(x):                   # 소수 판별하는 함수 생성
        for i in range(2, x):             # 2부터 x-1까지 (1을 포함하면 모든 수가 소수가 아닌 결과가 나오므로)
        	if x % i == 0:                # x가 2~(x-1) 사이의 수 중에서 나누어 떨어지는 수가 있으면
            	return False              # 소수가 아니다
        return True                       # 나누어 떨어지는 수가 없다면 소수!
    
    import sys
    
    N = int(sys.stdin.readline().strip())
    n_li = list(map(int, sys.stdin.readline().split()))
    count = 0                             # count의 기본값을 0으로 설정
    
    for i in n_li:                        # 입력받은 값의 리스트 중에서
        if i > 1:                         # 만약 1보다 크다면
            count+=int(primenumber(i))    # 소수 판별해서 True면 1을 count에 더한다
        else:                             # (1이면 다음 i로; 꼭 필요하지 않은 코드)
            continue
    
    print(count)                          # count 프린트

     

    댓글

Designed by Tistory.