반응형

문제

https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

 

풀이1

n = int(input())
people = list(map(int, input().split()))
# 오름차순정렬
# 예 : 3 1 4 3 2 -> 1 2 3 3 4
people.sort()

time = 0
# 누적 합 계산
# 1 / 1 2 / 1 2 3 / 1 2 3 3 / 1 2 3 3 4
for i in range(n):
    for j in range(0,i+1):
        time += people[j]
    
print(time)

풀이2(라이브러리)

n = int(input())
people = list(map(int, input().split()))
# 오름차순정렬
# 예 : 3 1 4 3 2 -> 1 2 3 3 4
people.sort()

time = 0

cum = np.cumsum(people)
# 누적 합 계산
for i in cum:
        time += i
    
print(time)
반응형
반응형

문제 

https://www.acmicpc.net/problem/11047

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net

풀이

n, k = map(int, input().split())

#입력된 코인 리스트에 저장
money_list=[]
for i in range(n):
    money = int(input())
    money_list.append(money)
        
result = 0

#코인 역순으로 정렬 [::-1]
for i in money_list[::-1]:
    #남은 코인값이 0 일 경우 break
    if k ==0:
        break    
    #나눈 후 몫 저장
    result += k//i
    # 나눈 후 나머지 저장
    k %= i
    
print(result)

 

반응형
반응형

문제

영일이는 생명과학에 관심이 생겨 왕개미를 연구하고 있었다.

왕개미를 유심히 살펴보던 중 특별히 성실해 보이는 개미가 있었는데,
그 개미는 개미굴에서 나와 먹이까지 가장 빠른 길로 이동하는 것이었다.

개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다.
(오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.)

이에 호기심이 생긴 영일이는 그 개미를 미로 상자에 넣고 살펴보기 시작하였다.

미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지
오른쪽 또는 아래쪽으로만 움직였다.

미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.

단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는
더이상 이동하지 않고 그 곳에 머무른다고 가정한다.

미로 상자의 테두리는 모두 벽으로 되어 있으며,
개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다.

 

입력 예시

1 1 1 1 1 1 1 1 1 1

1 0 0 1 0 0 0 0 0 1

1 0 0 1 1 1 0 0 0 1

1 0 0 0 0 0 0 1 0 1

1 0 0 0 0 0 0 1 0 1

1 0 0 0 0 1 0 1 0 1

1 0 0 0 0 1 2 1 0 1

1 0 0 0 0 1 0 0 0 1

1 0 0 0 0 0 0 0 0 1

1 1 1 1 1 1 1 1 1 1

 

출력 예시

1 1 1 1 1 1 1 1 1 1

1 9 9 1 0 0 0 0 0 1

1 0 9 1 1 1 0 0 0 1

1 0 9 9 9 9 9 1 0 1

1 0 0 0 0 0 9 1 0 1

1 0 0 0 0 1 9 1 0 1

1 0 0 0 0 1 9 1 0 1

1 0 0 0 0 1 0 0 0 1

1 0 0 0 0 0 0 0 0 1

1 1 1 1 1 1 1 1 1 1

 

풀이(개인1)

board = []
for i in range(10):
    board.append([])
    for j in range(10):
        board[i].append(0)

for n in range(10):
    board[n] = list(map(int, input().split()))

x = 1
y = 1
board[x][y] = 9

while True:
    # 먹이가 있을 떄
    if board[x][y]==2:
        board[x][y]=9
        break
    # 막다른 길일 때
    elif board[x+1][y] == 1 and board[x][y+1] == 1:
        board[x][y] = 9
        break
    #이동한 자리 9
    board[x][y]=9
    # 오른쪽이 벽이면 아래로 1칸
    if board[x][y+1] == 1: 
        x += 1
    # 아래쪽이 벽이면 오른쪽으로 1칸
    elif board[x+1][y] == 1: 
        y += 1
    # 주변에 벽이 없으면 오른쪽으로 1칸     
    else: 
        y += 1

        
for i in range(10):
    for j in range(10):
        print(board[i][j],end=' ')
    print()
반응형
반응형

문제

정보 선생님은 오늘도 이상한 출석을 부른다.

영일이는 오늘도 다른 생각을 해보았다.
출석 번호를 다 부르지는 않은 것 같은데... 가장 빠른 번호가 뭐였지?

출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.

 

입력 예시

10

 

출력 예시

10 4 2 3 6 6 7 9 8 5

 

풀이(개인1)

n = int(input())
a = input().split()

for i in range(n)
    a[i] = int(a[i])  

print(min(a))

풀이(개인2)

# 10
# 1 3 2 2 5 6 7 4 5 9
n = int(input())
a = input().split()

for i in range(n) :  #0부터 n-1까지...
    a[i] = int(a[i])  

min=a[0]

for i in range(n):
    if a[i] < min:
        min= a[i]
        
print(min)
반응형
반응형

문제

1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
3의 배수인 경우는 출력하지 않도록 만들어보자.

예를 들면,
1 2 4 5 7 8 10 11 13 14 ...
와 같이 출력하는 것이다.

 

입력 예시

10

 

출력 예시

1 2 4 5 7 8 10

 

풀이(개인)

n = int(input())
a = 1
while n >= a:
    if a%3 ==0:
        pass
    else :
        print(a,end=' ')
    a += 1

 

반응형
반응형

문제

친구들과 함께 3 6 9 게임을 하던 영일이는 잦은 실수 때문에 계속해서 벌칙을 받게 되었다.
3 6 9 게임의 왕이 되기 위한 369 마스터 프로그램을 작성해 보자.

** 3 6 9 게임은?
여러 사람이 순서를 정한 후, 순서대로 수를 부르는 게임이다.
만약 3, 6, 9 가 들어간 수를 자신이 불러야 하는 상황이라면, 수를 부르는 대신 "박수(X)" 를 쳐야 한다.
33과 같이 3,6,9가 두 번 들어간 수 일때, "짝짝"과 같이 박수를 두 번 치는 형태도 있다. 

 

입력 예시

9

 

출력 예시

1 2 X 4 5 X 7 8 X

 

풀이(개인)

a = int(input())
for i in range(1,a+1):
    if (i%10 ==3)|(i%10 ==6)|(i%10 ==9):
        print("X",end=' ')
    else :
        print(i,end=' ')
반응형
반응형

문제

1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지만
계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 계속 더해 나간다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는 지를 알아보고자하는 문제이다.

 

입력 예시

55

 

출력 예시

10

 

풀이(개인)

n = int(input())
a = 0
sum = 0

while True :
    a += 1
    sum += a
    if sum >= n:
        break
print(a)
반응형

+ Recent posts