19일차 문제

양진혁·2021년 11월 19일
0

문제 풀이

오늘은 이것이 취업을 위한 코딩테스트다 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을 더해 총 수를 리턴해줬다.

0개의 댓글