제주코딩베이스캠프 Python 37~49제

이하연·2020년 8월 3일
0

37번 문제 : count 사용

문제 : count 사용하기
학생들이 뽑은 후보들을 입력받으면 뽑힌 학생의 이름과 받은 표 수를 출력하는 프로그램을 작성하기로 했다
입력 - 첫 줄에 학생들이 뽑은 후보들이 입력됩니다.

원영 원영 은비 은비 은비 채연 채연

출력 - '은비가 총 4표로 반장이 되었습니다.'와 같습니다.

은비()가 총 4표로 반장이 되었습니다.
l = input().split()
count = 0
for i in range(len(l)-1) :
	if l.count(l[i-1]) < l.count(l[i]) :
    	count = i
print(count)
print(l[count])
print('{}'()가 총 {}표로 반장이 되었습니다.'.format(l[count]),l.count(l[count])))

참고)
format에 대해서 클릭


38번 문제 : Top 3 성적

문제 : 호준이의 아르바이트
호준이는 아르바이트로 영어 학원에서 단어 시험지를 채점하는 일을 하고 있다. 호준이가 일하는 학원은 매번 1위부터 3위까지의 학생에게 상으로 사탕을 준다. 그런데 오늘은 마침 사탕이 다 떨어져서 호준이가 채점을 하고 점수를 보내면, 당신이 아이들의 숫자만큼 사탕을 사러 가기로 했다. 학생들의 점수를 공백으로 구분하여 입력받는다. 1위~3위 학생은 여러명일 수 있고 1~3위 학생 중 중복되는 학생까지 포함하여 사탕을 사기로 한다.
입력

97 86 75 66 55 97 85 97 97 95

출력

6

list로 품

score_list =[97,86,75,66,55,97,85,97,97,95]
count = 0

for i in range(3) :
	# 97
	max_value = max(score_list)
	for j in range(len(score_list)) :
		if max_value in score_list :
			count+=1
			score_list.remove(max_value)

print(count)

set으로 품

score_list =[97,86,75,66,55,97,85,97,97,95]
score_set = set(score_list)
count = 0

for i in range(3) :
    max_value = max(score_set) #97
    count+=score_list.count(max_value)
    score_set.remove(max_value)

print(count)

참고)

  • remove는 중복된 값이 있을 경우에 앞에서 하나씩 제거

39번 문제 : 오타 수정하기

문제 : 오타 수정하기
문장의 모든 e를 q로 잘못 친 것을 발견했습니다.
숭인이는 프로그램을 돌려 재빠르게 모든 q를 e로 바꾸는 프로그램을 작성하려고 합니다.
문장이 입력되면 모든 q를 e로 바꾸는 프로그램을 작성해 주세요.
입력

querty

출력

euerty

입력

La viq qn rosq

출력

La vie en rose
userInput = 'querty'
print(userInput.replace("q", "e"))

40번 문제 : 놀이동산에 가자

문제 : 놀이동산에 가자
모든 놀이기구는 한번에 타는 인원수에는 제한이 없지만 제한 무게를 넘으면 무조건 다음 기구를 타야 합니다.
원범이와 친구들이 총 몇 명 탈 수 있는지 알 수 있는 프로그램을 작성해 주세요.
첫번째 줄에서 제한 무게가 주어지고 두번째 줄에서는 함께한 친구들의 수 n이 주어집니다. 그 다음 차례대로 탑승할 친구들이 몸무게가 주어집니다. 몸무게는 무작위로 주어집니다.
입력

50
5
20
20
20
20
20

출력

2
limit_weight = int(input())
n = int(input())
list_weight = list(map(int, input().split()))
count =0
maximum = 0

for i in range(len(list_weight)) :
    maximum += list_weight[i]
    if limit_weight < maximum :
        break
    count+=1;

print(count)

41번 문제 : 소수판별

문제 : 소수판별
숫자가 주어지면 소수인지 아닌지 판별하는 프로그램 작성
소수이면 YES, 소수가 아니면 NO로 출력
(소수 : 1과 자기 자신만으로 나누어떨어지는 1보다 큰 양의 정수)
입력

11

출력

YES

입력

6

출력

NO
input = 1
count = 0

for i in range(2, input) :
    if input%i == 0 :
        count+=1
    else :
        continue

if count > 0 or input == 1:
    print("NO")
else :
    print("YES")
def prime(num) :
    if num != 1 :
        for i in range(2,num) :
            if num%i == 0 :
                return False
    else :
        return False
    return True

sosu = 2

if prime(sosu) :
    print('YES')
else :
    print('NO')

42번 문제 : 2020년

문제 : 2020년


43번 문제 : 10진수를 2진수로

문제43 : 10진수를 2진수로
사용자에게 숫자를 입력받고 이를 2진수를 바꾸고 그 값을 출력해주세요
(bin 함수를 사용하지 않고 풀어주세요)
입력

13

출력

1101
num = 13
binary_list = []

while num != 0:
    binary_list.append(num%2)
    num = int(num/2)

print("".join(map(str, list(reversed(binary_list)))))

44번 문제 : 각 자리수 합

문제 : 각 자리수의 합
사용자가 입력한 양의 정수의 각 자리수의 합을 구하는 프로그램을 만들어주세요
예를 들어 18234 = 1+8+2+3+4 이고 정답은 18입니다.
3849 = 3+8+4+9이고 정답은 24입니다.
입력

1234

출력

10
num = 4567
sum = 0

for i in str(num) :
    sum += int(i)

print(sum)

참고)

list = [2,3,4,5]
for index,value in enumerate(list): 
    print(index,value)
    #인덱스랑 값이 나옴

45번 문제 : time함수

문제 : time함수 사용하기
python의 모듈 중 하나인 time 모듈은 1970년 1월 1일 0시 0분 0초 이후로부터 지금까지 흐른 시간을 초단위로 반환합니다. 이를 이용하여 현재 연도(2019)를 출력해보세요

import time

now_year =  time.strftime('%Y',time.localtime(time.time()))

print(now_year)

참고)

import time
time.strftime('포멧',시간객체)

포멧 : %A 요일 , %Y 연 , %B 문자 월 / %m 숫자 월 , %d 일 , %c 날짜와 시간
시간객체 : localtime(time.time())


46번 문제 : str 자료형의 응용

문제 : str 자료형의 응용
1부터20까지의(20 포함) 모든 숫자를 일렬로 놓고 모든 자리수의 총 합을 구하시오
예를 들어 10부터 15까지의 모든 숫자를 일렬로 놓으면 101112131415이고 각 자리의 숫자를 21입니다.

def hap(num) :
    sum = 0
    for i in num :
        sum+=int(i)
    return sum


a,b  = map(int,input().split())
str1 = ''

for i in range(a,b+1) :
    str1 += str(i)

print(hap(str1))

47번 문제 : set 자료형의 응용

문제 : set 자료형의 응용
구글 설문지를 배포하였으나 제주대학생들이 중복해서 n개씩 설문지를 제출하였습니다.
중복된 데이터들을 삭제하여 실제 접수 명단이 몇 명인지 알고 싶습니다.
아래 주어진 데이터들로부터 중복을 제거하여 실제 접수 인원을 출력해 주세요
예시

people = [
('이호준',01050442903),
('이호상',01051442904),
('이준호',01050342904),
('이호준',01050442903),
('이준',01050412904),
('이호',01050443904),
('이호준',01050442903),
]
people = [
('이호준','01050442903'),
('이호상','01051442904'),
('이준호','01050342904'),
('이호준','01050442903'),
('이준','01050412904'),
('이호','01050443904'),
('이호준','01050442903'),
]

setList = set(people)
print(len(setList))

48번 문제 : 대소문자 바꿔서 출력하기

문제 : 대소문자 바꿔서 출력하기
문자열이 주어지면 대문자와 소문자를 바꿔서 출력하는 프로그램 작성
입력

AAABBBcccddd

출력

aaabbbCCCDDD
str1 = 'AAABBBcccddd'
str2 = ''
for i in str1 :
    if i.isupper() :
        str2+= i.lower()
    else :
        str2+= i.upper()

print(str2)

49번 문제 : 최댓값 구하기

문제 : 최댓값 구하기
순서가 없는 10개의 숫자가 공백으로 구분되어 주어진다. 주어진 숫자들 중 최댓값을 반환하라
입력

10 9 8 7 6 5 4 3 2 1

출력

10
a = list(map(int, input().split()))
print(max(a))

0개의 댓글