오늘은 이것이 취업을 위한 코딩테스트다 with 파이썬에 나온 문제들을 풀었다.
첫번째 문제는 큰 수의 법칙으로
n,m,k가 첫번째 줄에 입력된다.
n은 두번째 줄에 입력될 list의 길이, m은 반복 숫자, k는 가장 큰 수가 반복될 횟수이다.
즉 첫째줄이 5 8 3 이고 둘째줄이 2 4 5 4 6이라고 한다면 46이 나오게 된다.
n,m,k = map(int,input().split()) data = sorted(list(map(int,input().split()))) re = 0 while True: for i in range(k): if m == 0: break re += data[-1] m -=1 if m == 0: break re += data[-2] m -=1 print(re)
while문을 사용하고 m이 0이되면 while문을 탈출하는 식으로 코드를 작성했다.
while문 안에 for문을 사용해서 가장 큰 값을 더해주고 m의 횟수를 빼준다 그 다음 큰값을 더해준 후 다시 m을 빼주며 m을 0으로 만든다.
두번째 문제는 숫자 카드 게임으로
a= 행의 갯수
b는 열의 갯수
를 입력한 후 숫자를 입력한다.
각 행마다 가장 작은 수를 찾고
그 작은수들 중 가장 큰 수를 리턴하는 것이다.
3 3
3 1 2
4 1 4
2 2 2
의 경우에는 첫째 행 최솟값은 1, 둘째 행 최솟값도 1, 셋째 행 최솟값은 2 그 이후
가장 큰 값을 리턴해 줘야한다.
a,b = map(int,input().split()) el = [] for i in range(a): data = sorted(list(map(int,input().split()))) el.append(data[0]) print(sorted(el)[-1])
행 열을 구한 후 행의 숫자만큼 반복한다. 반복문 속에는 데이터를 입력받아 sorted()를 통해 오름차순으로 정렬하고 빈 리스트에 가장 최솟값을 입력한다.
그 다음 el을 다시 오름차순으로 정렬해 맨 마지막 가장 큰 값을 리턴한다.
세번째 문제는 1이 될때까지로
N이 1이 될 때까지 두 가정중 하나를 반복한다.
1. N에서 1을 뺀다
2. N을 K로 나눈다.
입력예시
25 5
출력예시
2
a,b = map(int,input().split()) count = 0 while a>1: if a %b !=0: a = a-1 count +=1 elif a %b == 0: a = a/b count +=1 print(count)
while문을 써서 a가 1이 될때 탈출할 수 있게 했다.
그리고 a를 b로 나눴을 때 나머지가 0인 경우 나눠줬고 아닌 경우 1을 빼 주었다. 그 다음 count에 횟수를 하나씩 더해서 완성했다.
네번째 문제는
N시간 59분 59초에 3이 몇번 들어있는지 확인하는 문제이다.
a= int(input()) count = 0 for i in range(a+1): for j in range(60): for n in range(60): if "3" in (str(i)+str(j)+str(n)): count +=1 print(count)
반복문을 통해서 문자열로 바꾼 시 분 초에 3이 있으면 count에 1을 더해 총 수를 리턴해줬다.