■ 출처
- 코딩테스트 : Python3 / 코딩테스트 입문 / 모든 상태 체크 / 61~100문제
■ 연습문제
61. 2차원으로 만들기
def solution(num_list, n):
answer = []
for i in range(0, len(num_list)//n):
answer.append(num_list[n*i : n*(i+1)])
return answer
62. 점의 위치 구하기
def solution(dot):
x_val = dot[0]
y_val = dot[1]
if (x_val > 0) and (y_val > 0):
return 1
elif (x_val < 0) and (y_val > 0):
return 2
elif (x_val < 0) and (y_val < 0):
return 3
elif (x_val > 0) and (y_val < 0):
return 4
63. 구슬을 나누는 경우의 수
factorial() 함수 : 1부터 n수까지 모든 수의 값들을 곱한 함수
- 예시,
from math import factorial
print(factorial(1)) #1
print(factorial(2)) #1*2
print(factorial(3)) #1*2*3
print(factorial(4)) #1*2*3*4
print(factorial(5)) #1*2*3*4*5
from math import factorial
def solution(balls, share):
#분자: 전체 수!
numerator = factorial(balls)
#분모: (전체 수-뽑을 수)! * 뽑을 수!
denominator = factorial(balls-share) * factorial(share)
return numerator/denominator
64. 가위 바위 보
def solution(rsp):
answer = ''
for i in rsp:
if i == "2":
answer += '0'
elif i == "0":
answer += '5'
else:
answer += '2'
return answer
65. 모스부호 (1)
def solution(letter):
morse = {'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f', '--.':'g','....':'h',
'..':'i','.---':'j','-.-':'k','.-..':'l','--':'m','-.':'n','---':'o','.--.':'p',
'--.-':'q','.-.':'r', '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'}
answer = ''
letter = list(letter.split(' '))
for i in letter:
answer += morse[i]
return answer
66. 개미 군단
def solution(hp):
ant_cnt = 0
ant_list = [5, 3, 1]
while hp != 0:
for i in ant_list:
ant_cnt += (hp//i) # 사용할 개수 수
hp = (hp%i) # 차출된 개미로 인한 잔여 ph
return ant_cnt
67. 순서쌍의 개수
pass, continue, break 명령어 : for, while 등 반복문을 원하는대로 조작하기 위해 사용하는 명령어
- pass : 실행할 코드가 없어 다음 행동을 계속 수행하라는 의미
- continue : 바로 다음 순번의 Loop(반복)을 수행하라는 의미
- break : 반복문을 멈추고 Loop(반복) 밖으로 나가라는 의미
#순서쌍의 곱이 n일 경우에 대한 횟수 계산하는 알고리즘
def solution(n):
cnt = 0
for i in range(1, n+1):
j = n%i
if j == 0:
cnt += 1
else:
continue
return cnt
68. 진료순서 정하기
def solution(emergency):
rank_emer = []
#1. emergency 매개변수를 응급도 순서대로 정렬하여 리스트 정의
sorted_emer = sorted(emergency, reverse = True)
#2. 응급 순서를 확인하고 싶은 원본 값을 가져와 index()함수를 사용해서 확인(단, 1순위가 0으로 표기되니 +1 추가 必)
for j in emergency:
rank_emer.append(sorted_emer.index(j) + 1)
#rank_emergency = [sorted_emer.index(j) + 1 for j in emergency]
return rank_emer
69. 외계행성의 나이
def solution(age):
num_alp_dic = {'0':'a', '1':'b', '2':'c', '3':'d', '4':'e', '5':'f', '6':'g', '7':'h', '8':'i', '9':'j'}
answer = ''
for i in str(age):
answer += num_alp_dic[i]
return answer
70. 배열 자르기
def solution(numbers, num1, num2):
return numbers[num1:num2+1]
71. 짝수의 합
나누셈 연산자 구분 : ①'/'은 기본적인 나눗셈, ②'//'은 나눗셈의 몫, ③%은 나눗셈의 나머지
def solution(n):
answer = 0
for i in range(0, n+1):
if i%2 == 0:
answer += i
return answer
72. 양꼬치
def solution(n, k):
answer = (n*12000) + (k*2000) - ((n//10)*2000)
return answer;
"""def solution(n, k):
lamb = n * 12000
beverage = k * 2000
if len(str(n))==2:
beverage -= int(str(n)[0]) * 2000
return lamb+beverage"""
73. 각도기
def solution(angle):
if (0 < angle) and (angle < 90):
return 1
elif angle == 90:
return 2
elif (90 < angle) and (angle < 180):
return 3
elif angle == 180:
return 4
74. 특정 문자 제거하기
replace() 함수 : 문자열 안에 특정 문자를 선택하여 새로운 문자로 변경하는 함수
def solution(my_string, letter):
answer = my_string.replace(letter, '')
return answer
75. 문자 반복 출력하기
def solution(my_string, n):
answer = ''
for i in my_string:
answer += i*n
return answer
76. 짝수 홀수 개수
def solution(num_list):
#짝/홀 개수 입력 리스트, 짝수 및 홀수 카운트할 변수 정의
answer = []; even = 0; odd = 0
for i in num_list:
if i%2 == 0:
even += 1
else:
odd += 1
answer.append(even)
answer.append(odd)
return answer
"""def solution(num_list):
answer = [0,0]
for n in num_list:
answer[n%2]+=1
return answer"""
77. 직각삼각형 출력하기
n = int(input())
for i in range(0, n):
print('*'*(i+1))
78. 문자열 뒤집기
#문자 매개변수를 뒤집어서 출력하는 알고리즘
def solution(my_string):
answer = ''
for i in range(len(my_string), 0, -1):
answer += my_string[i-1]
return answer
79. 배열 뒤집기
#문자 리스트 매개변수를 뒤집어서 출력하는 알고리즘
def solution(num_list):
answer = []
for i in range(len(num_list), 0, -1):
answer.append(num_list[i-1])
return answer
80. 나이 출력
def solution(age):
return (2022 - age) + 1
81. 아이스 아메리카노
def solution(money):
answer = [(money//5500), (money%5500)]
return answer
82. 옷가게 할인 받기
def solution(price):
if price >= 500000:
price *= 0.8
elif price >= 300000: #elif 500000 > price >= 300000:
price *= 0.9
elif price >= 100000: #elif 300000 > price >= 100000:
price *= 0.95
return int(price)
83. 배열의 평균값
#방법01: 수치 계산 기능을 제공하는 numpy라이브러리 활용
"""import numpy
def solution(numbers):
return numpy.mean(numbers)"""
#방법02: 내장함수 활용
def solution(numbers):
return sum(numbers)/len(numbers)
84. 피자 나눠 먹기 (3)
#1판당 피자 조각 수(slice)가 있을 떄 n명 사람이 1조각 이상 먹을 수 있도록 주문해야할 피자 판수
def solution(slice, n):
return ((n-1) // slice) + 1
"""import math
def solution(slice, n):
return math.ceil(n/slice)"""
85. 피자 나눠 먹기 (2)
#n명 사람들이 똑같은 수량의 피자를 먹고자할 때 주문해야할 피자 수
def solution(n):
i = 1
while(1):
if (6*i)%n == 0:
return i
i += 1
86. 피자 나눠 먹기 (1)
.ceil() 함수 : 들어오는 인자의 올림 값을 반환
import math
def solution(n):
return math.ceil(n/7)
87. 짝수는 싫어요
def solution(n):
answer = []
for i in range(1, n+1, 2):
answer.append(i)
return answer
88. 최빈값 구하기
enumerate() 함수 : 반복문(for 등)에서 '인덱스 값'과 '요소 값'을 동시에 반환받을 때 사용하는 함수
Counter() 함수 : 중복된 데이터가 저장된 배열 내 각 원소들이 몇 번씩 나오는지 확인하는 함수
- 예시, from collections import Counter
letters = 'bbibbi'
c = Counter(letters)
c #Counter({'b':4, 'i':2})
from collections import Counter
def solution(array):
counter = Counter(array)
max_count = max(counter.values())
mode_values = [k for k, v in counter.items() if v == max_count]
if len(mode_values) > 1:
return -1
else:
return mode_values[0]
89. 중앙값 구하기
def solution(array):
array = sorted(array)
return array[len(array)//2]
90. 나머지 구하기
def solution(num1, num2):
return num1%num2
91. 배열 두 배 만들기
def solution(numbers):
answer = [i*2 for i in numbers]
return answer
92. 분수의 덧셈
Fraction() 함수 : 첫번째 인자는 '분자', 두번째 인자는 '분모'를 입력하여 완성된 분수를 기약분수로 바꿔주는 함수
- .numerator : 함수를 통해 산출한 결과의 '분자' 출력
- .denominator : 함수를 통해 산출한 결과의 '분모' 출력
from fractions import Fraction
def solution(numer1, denom1, numer2, denom2):
num_den = Fraction(numer1, denom1) + Fraction(numer2, denom2)
return [num_den.numerator, num_den.denominator]
93. 숫자 비교하기
def solution(num1, num2):
return 1 if num1 == num2 else -1
94. 두 수의 나눗셈
def solution(num1, num2):
return int((num1/num2)*1000)
95. 몫 구하기
def solution(num1, num2):
return num1//num2
96. 두 수의 곱
def solution(num1, num2):
return num1*num2
97. 두 수의 차
def solution(num1, num2):
return num1-num2
98. 두 수의 합
def solution(num1, num2):
return num1+num2
99. 머쓱이보다 키 큰 사람
def solution(array, height):
cnt = 0
for i in array:
if i > height:
cnt += 1
return cnt
100. 중복된 숫자 개수
def solution(array, n):
cnt = 0
for i in array:
if i == n:
cnt += 1
return cnt