728x90

BOJ 1002 터렛

문제

조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다.

다음은 조규현과 백승환의 사진이다.

출처 - 백준 온라인 저지

이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다.

조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다.

조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 

조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 

류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오.

시간 제한 : 2 초
메모리 제한 : 128 MB

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 이루어져 있다.

한 줄에 x1, y1, r1, x2, y2, r2가 주어진다. 

x1, y1, x2, y2는 -10,000보다 크거나 같고, 10,000보다 작거나 같은 정수이고, r1, r2는 10,000보다 작거나 같은 자연수이다.

출력

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 

만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

예제 입력 1

3
0 0 13 40 0 37
0 0 3 0 7 4
1 1 1 1 1 5

예제 출력 1

2
1
0

풀이

# boj 1002 터렛

t = int(input())
for i in range(t):
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    d = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5
    rs = r1 + r2
    rm = abs(r1 - r2)
    if d == 0:
        if r1 == r2:
            print(-1)
        else:
            print(0)
    else:
        if d == rs or d == rm:
            print(1)
        elif d < rs and d > rm:
            print(2)
        else:
            print(0)
728x90
728x90

BOJ 2475 검증수

문제

컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 

고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 

검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.

예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 

각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.

출력

첫째 줄에 검증수를 출력한다.

예제 입력 1

0 4 2 5 6

예제 출력 1

1

풀이

# boj 2475 검증수

arr = map(int, input().split())
res = 0

for n in list(arr):
    res += n**2
print(res%10)
728x90
728x90

BOJ 4153 직각삼각형

문제

과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 

주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.

출처 - 백준 온라인 저지

입력

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 

각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

출력

각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.

예제 입력 1

6 8 10
25 52 60
5 12 13
0 0 0

예제 출력 1

right
wrong
right

풀이

# boj 4153 직각삼각형

res = []
 
while True:
    tri = list(map(int, input().split()))
 
    if sum(tri) == 0:
        break
 
    maximum = max(tri)
    tri.remove(maximum)
 
    if ((maximum ** 2) == (tri[0] ** 2) + (tri[1] ** 2)):
        res.append('right')
    else:
        res.append('wrong')
 
for i in range(0, len(res)):
    print(res[i])
728x90
728x90

BOJ 10757 큰 수 A+B

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

시간 제한 : 1 초
메모리 제한 : 256 MB

입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)

출력

첫째 줄에 A+B를 출력한다.

예제 입력 1

9223372036854775807 9223372036854775808

예제 출력 1

18446744073709551615

풀이

# boj 10757 큰 수 A+B

a, b = map(int, input().split())
print(a+b)
728x90
728x90

BOJ 1924 2007년

문제

오늘은 2007년 1월 1일 월요일이다. 

그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

시간 제한 : 2 초
메모리 제한 : 128 MB

입력

첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 

참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

출력

첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.

예제 입력 1

1 1

예제 출력 1

MON

예제 입력 2

3 14

예제 출력 2

WED

예제 입력 3

9 2

예제 출력 3

SUN

예제 입력 4

12 25

예제 출력 4

TUE

풀이

# boj 1924 2007년

week = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']
sum = 0 
a = [1,3,5,7,8,10,12]
b = [4,6,9,11]
x, y = map(int,input().split())

for i in range(1, x): 
    if i in a :
        sum += 31
    elif i in b :
        sum += 30
    elif i == 2 :
        sum += 28  
    
sum += y
print(week[sum%7])
728x90
728x90

BOJ 11653 소인수분해

문제

정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.

시간 제한 : 1 초
메모리 제한 : 256 MB

입력

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

출력

N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. 

N이 1인 경우 아무것도 출력하지 않는다.

예제 입력 1

72

예제 출력 1

2
2
2
3
3

예제 입력 2

3

예제 출력 2

3

예제 입력 3

6

예제 출력 3

2
3

예제 입력 4

2

예제 출력 4

2

예제 입력 5

9991

예제 출력 5

97
103

풀이

# boj 11653 소인수분해

n = int(input())
while n-1:
    for i in range(2, int(n)+1):
        if n%i == 0:
            print(i)
            n = n/i
            break
728x90
728x90

BOJ 10039 평균 점수

문제

상현이가 가르치는 아이폰 앱 개발 수업의 수강생은 원섭, 세희, 상근, 숭, 강수이다.

어제 이 수업의 기말고사가 있었고, 상현이는 지금 학생들의 기말고사 시험지를 채점하고 있다. 

기말고사 점수가 40점 이상인 학생들은 그 점수 그대로 자신의 성적이 된다. 

하지만, 40점 미만인 학생들은 보충학습을 듣는 조건을 수락하면 40점을 받게 된다. 

보충학습은 거부할 수 없기 때문에, 40점 미만인 학생들은 항상 40점을 받게 된다.

학생 5명의 점수가 주어졌을 때, 평균 점수를 구하는 프로그램을 작성하시오.

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

입력은 총 5줄로 이루어져 있고, 원섭이의 점수, 세희의 점수, 상근이의 점수, 숭이의 점수, 강수의 점수가 순서대로 주어진다.

점수는 모두 0점 이상, 100점 이하인 5의 배수이다. 따라서, 평균 점수는 항상 정수이다.

출력

첫째 줄에 학생 5명의 평균 점수를 출력한다.

예제 입력 1

10
65
100
30
95

예제 출력 1

68

힌트

숭과 원섭이는 40점 미만이고, 보충학습에 참여할 예정이기 때문에 40점을 받게 된다. 

따라서, 점수의 합은 340점이고, 평균은 68점이 된다.

풀이

# boj 10039 평균 점수

total = 0
for i in range(5):
    n = int(input())
    if n < 40:
        n = 40
    total += n
avg = total//5
print(avg)
728x90
728x90

BOJ 3003 킹,퀸,룩,비숍,나이트,폰

문제

동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.

체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다.

하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.

체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.

동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 

몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 

이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.

출력 

첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 

만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.

예제 입력 1

0 1 2 2 2 7

예제 출력 1

1 0 0 0 0 1

예제 입력 2

2 1 2 1 2 1

예제 출력 2

-1 0 0 1 0 7

풀이

# boj 3003 킹, 퀸, 룩, 비숍, 나이트, 폰

chess = [1, 1, 2, 2, 2, 8]
a = list(map(int, input().split()))
 
for i in range(len(chess)):
    print(chess[i] - a[i], end=' ')
728x90

+ Recent posts