Coding Test/문제 풀이

[Algorithm] 준비운동 PART 1. 튼튼한 기본기 (1)

EUNJI HA 2022. 1. 10. 14:36

3460번: 이진수 (🥉 브론즈 3티어)

 

3460번: 이진수

양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.

www.acmicpc.net

t = int(input())
testCase = []
for i in range(t):
    testCase.append(int(input()))

for i in testCase:
  temp = i
  count = 0
  while True:
    if temp == 1:
      print(count)
      break
    if temp % 2 == 1:
      print(count, end=" ")
    temp = temp // 2
    count += 1

bin(), 직접 풀어볼 겸 해당 함수는 사용하지 않았다.

 

10818번: 최소, 최대 (🥉 브론즈 3티어)

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

N = int(input())
numList = list(map(int, input().split()))
numList.sort()
print(numList[0], numList[-1])

min(리스트), max(리스트) 도 가능하다.

 

 

2460번: 지능형 기차 2 (🥉 브론즈 3티어)

 

2460번: 지능형 기차 2

최근에 개발된 지능형 기차가 1번역(출발역)부터 10번역(종착역)까지 10개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다.

www.acmicpc.net

# input
inputList = []
for i in range(10):
    inputList.append(list(map(int, input().split())))

# execute
maxNum = 0
curNum = 0
for people in inputList:
    curNum -= people[0]
    curNum += people[1]
    if curNum > maxNum:
        maxNum = curNum
print(maxNum)

각 역마다 사람 수 List에 저장해두고, max(리스트) 해도 돼.

 

 

10870번: 피보나치 수 5 (🥉 브론즈 2티어)

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

n = int(input())

def fibo(n):
    if n == 0:
        return 0
    if n == 1:
        return 1
    return fibo(n - 1) + fibo(n - 2)

print(fibo(n))

 

2309번: 일곱 난쟁이 (🥉 브론즈 2티어)

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

# input
dwarfList = [int(input()) for _ in range(9)]

# execute
dwarfList.sort()
goalNum = sum(dwarfList) - 100

from itertools import combinations

targetList = list(combinations(dwarfList, 2))

for i in targetList:
    if sum(i) == goalNum:
        dwarfList.remove(i[0])
        dwarfList.remove(i[1])
        for i in dwarfList:
            print(i)
        break