[Python 알고리즘] 012- 백준 단계별 05~07 정리

sehannnnnnn·2022년 1월 25일
0
post-thumbnail

백준 단계별 알고리즘 5,6,7단계

  1. 1차원 배열
  2. 함수
  3. 문자열

마찬가지로 파이썬 기초정도 문제라 각 파트별 주요 문제들과 풀이에 대한 언급과 기록을 하도록하기로하죠👨‍💻


05. 1차원배열

2562번 최댓값

10개의 정수 중 가장 큰 정수와 그 정수가 몇번째 수인지 반환하라.

list의 index() 메서드 -> list내의 특정 요소의 위치값을 반환한다.
max 함수와 함께 쓰면 list a내의 가장 큰 값과 그에 위치값을 반환한다.

2577번 숫자의 개수

세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.

count 메서드는 문자열, list 내의 원소의 개수를 세는데 사용한다.

3052번 나머지

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

중복을 제거하고 싶을 때 list를 set로 변환하여 중복을 제거하면 간단하다!

4344번 평균은 넘겠지

학생의 명수와 점수들이 입력되면 그중 평균값보다 높은 학생의 비율을 반환한다.

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

List 형태로 점수를 입력 받고 평균을 구한다. case 배열 내의 요소 index 1부터는 점수이고 index 0은 학생의 수이니 7번째 줄처럼 계산하면 된다.

format 함수 활용법 기억해두자

'{:.3f}%'.format(수) #소수점 3번째 자리까지 표시
format(수,'{형식}') 이런꼴도 가능

06. 함수

4673번 셀프넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다.

양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다.

예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다.

33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ...

n을 d(n)의 생성자라고 한다. 위의 수열에서 33은 39의 생성자이고, 39는 51의 생성자, 51은 57의 생성자이다. 생성자가 한 개보다 많은 경우도 있다. 예를 들어, 101은 생성자가 2개(91과 100) 있다.

생성자가 없는 숫자를 셀프 넘버라고 한다. 100보다 작은 셀프 넘버는 총 13개가 있다. 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97

10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

  1. 생성자가 있는 수를 저장할 수 있는 set를 하나 만들어둔다. (selfnum)
  2. num을 str로 변환한 후 각 자리수에 해당하는 수들을 골라 더해가며 selfnum이라는 set를 채운다.
  3. 만약 현재 num이 selfnum set에 포함되있지 않다면 그 수는 생성자가 없는 셀프넘버이다.
    // set 이름을 실수 했다.. 셀프넘버가 아닌데 이름을 셀프넘버로 했네..

07. 문자열

11654번 아스키코드

아스키코드 변환 함수 -> ord()

10809번 알파벳 찾기

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

ascii_lowercase를 패키지로 가져오면 영어 소문자 list를 가져올 수 있음.
text.find()메서드를 사용하면 문자열 내의 특정 문자의 개수를 반환함! -> 없을 경우 -1을 반환한다

1157번 단어공부

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

  1. text를 받을 때 항상 uppercase만으로 받는다.
  2. 입력 받은 text에 사용된 문자의 종류만을 얻기 위해 set를 이용한다.
  3. a라는 딕셔너리에 text에 사용된 문자를 키로 하여 텍스트에 몇번 사용되었는지 확인 후 저장한다.
  4. 딕셔너리값중 가장 큰 value를 가진 key값을 반환하기 위해 리스트 컴프리헨션으로 result에 값을 저장한다.
  5. result 출력 -> 만약 result내 값이 두개 이상이라면 ?를 출력
profile
FE 개발자 준비생 블로그 🪐

0개의 댓글