외계어로 된 문제라서 혹시 어려워하는 사람들을 위해서, 그리고 미래에 혹시나 볼 나를 위해서 문제를 정리해둔다.

참고로 언어는 포르투갈어라고 하는 것 같다.

포르투갈어 문제.. 번역을 안해준 백준...


이럴 땐 구글번역기가 최고다


문제는 굉장히 단순한 구현문제이다.

다음과 같이 하면 된다.

 

1
2
3
4
5
6
A, B = map(int, input().split())
if A == B:
    print(A)
else:
    print(max(A,B))
    
cs

 

흔하디 흔한 if-else문을 익히는 문제이다.

다만 이렇게 정리하는 이유는 원래 사용하던 C/C++이었으면 금방 풀었을텐데, 

아직도 2개 이상의 입력받기를 할 때 python으로 처리하는 방법이 계속 햇갈려서이다.

정리겸 한 번 올리기로 한다.

출처: https://www.acmicpc.net/problem/11367


예제 입력에서 "name value"의 형태로 입력받는 부분이 계속 햇갈린다..

그냥 scanf로 받으면 되는 C/C++과는 살짝 다르게 python을 받기 때문이다.

중요한 것은 split()을 사용하고, 각각의 변수에 이를 통해서 저장하도록 만들어야 한다는 점이다.

즉, 다음과 같은 형태가 필요하다.

1
name, score = input().split()
cs

 

결국 내가 만든 정답코드는 다음과 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
repeat = int(input())
for i in range(0, repeat):
    name, score = input().split()  # 이 부분이 중요. 2개 이상 입력받기를 계속 햇갈리는 중...2021-7-16
    # print(name, score, sep=' ')
    if int(score) >= 97:
        grade = "A+"
    elif int(score) <= 96 and int(score) >= 90:
        grade = "A"
    elif int(score) <= 89 and int(score) >= 87:
        grade = "B+"
    elif int(score) <= 86 and int(score) >= 80:
        grade = "B"
    elif int(score) <= 79 and int(score) >= 77:
        grade = "C+"
    elif int(score) <= 76 and int(score) >= 70:
        grade = "C"
    elif int(score) <= 69 and int(score) >= 67:
        grade = "D+"
    elif int(score) <= 66 and int(score) >= 60:
        grade = "D"
    else:
        grade = "F"
    print(name, grade, sep=' ')
 
cs

문제는 내가 바보라서 일일이 int(score)를 elif에 넣었다는 것이다.

그냥 간단하게 ....

1
score = int(score)
cs

이렇게 한 다음 elif문에 score만 넣으면 되는 것을....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
repeat = int(input())
for i in range(0, repeat):
    name, score = input().split()  # 이 부분이 중요. 2개 이상 입력받기를 계속 햇갈리는 중...2021-7-16
    # print(name, score, sep=' ')
    score = int(score)  # 이렇게 하나만 넣으면 score는 int형으로 변환이 된다.
    if score >= 97:
        grade = "A+"
    elif score <= 96 and score >= 90:
        grade = "A"
    elif score <= 89 and score >= 87:
        grade = "B+"
    elif score <= 86 and score >= 80:
        grade = "B"
    elif score <= 79 and score >= 77:
        grade = "C+"
    elif score <= 76 and score >= 70:
        grade = "C"
    elif score <= 69 and score >= 67:
        grade = "D+"
    elif score <= 66 and score >= 60:
        grade = "D"
    else:
        grade = "F"
    print(name, grade, sep=' ')
cs

 

 

출처: https://www.acmicpc.net/problem/11367

 

11367번: Report Card Time

The input will begin with a single line containing just a whole number, n, of the number of hobbits in the class, followed by n lines in the form a b, where a is the hobbit’s name (only alphabetical characters) and b is the hobbit’s grade, given as a w

www.acmicpc.net

 

매우 단순한 수학문제임에도 불구하고 몇 번이고 틀려서 계속 고민하다가 겨우 왜 그런지 알게된 문제라서 이렇게 정리를 해본다.

출처: https://www.acmicpc.net/problem/10093

문제를 보다시피 매우 간단한 문제이다.

다만, 한 가지를 간과한 것이 있어서 계속 틀렸다.

숫자가 예제에서 "8 14" 라고 되어있는데, 잊지 말자... "14 8"도 들어갈 수 있고, "13, 14"도 들어갈 수 있음을...

 

처음에 그래서 매우 간단하게 만든 코드이자 계속 틀렸다고 나온 코드가 다음의 코드이다.

(물론, 위에서 주어진 예제인 "8 14"는 무척이나 잘 돌아간다...)

1
2
3
4
5
num1, num2 = list(map(int, input().split()))
btw_num = num2-num1-1
print(btw_num)
for i in range(num1+1, num2):
    print(i, end=' ')
 

 

그리고 max와 min값을 새로 처리해서 만들어야 한다.

결국 다음과 같은 코드가 정답인 코드이다.

1
2
3
4
5
6
7
8
9
10
a, b = list(map(int, input().split()))
num2 = max(a, b)
num1 = min(a, b)
btw_num = num2-num1-1
if num1 == num2 or num1+1 == num2:
    btw_num = 0
print(btw_num)
for i in range(num1+1, num2):
    print(i, end=' ')
 
cs

 

출처: https://www.acmicpc.net/problem/10093

 

10093번: 숫자

두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

파이썬을 최근에 처음부터 배우기 시작하면서 기능을 하나씩 알아가고 있는 중이다.

 

이 문제는 특히 n진수를 10진수의 숫자로 변환을 하는 방법이다.

 

원래 C언어에서라면 일일이 배열로 받고, 그것을 다시 10진수로 처리해야하는 과정이 있었겠지만,

파이썬에서는 input으로 수를 받고, 그것을 int()를 통해서 밑을 n이라는 수로 받음으로써 쉽게 처리할 수 있다.

 

 

출처: https://www.acmicpc.net/problem/11104

 


 

1
2
3
4
5
# 파이썬에서는 binary를 input으로 입력을 받고, 이를 int를 통해서 binary변수의 수를 밑이 2인 것으로 하여 변환이 가능하다.
for i in range(0int(input())):
    binary = input()
    print(int(binary, 2))  # 밑(2가 있는 자리)을 어떤 수로 해서 처리할 것인지 
 
cs

 

우선 random함수에 대해서 알아야 한다.

 

random함수를 하기 위해서는 random함수를 import시켜야 한다. 

import random

 

이번에 사용할 random이 형태는 range의 값을 받아와서 random하게 숫자를 출력하는 문장을 사용할 것이다.

random.randrange(시작값, 끝값+1)

이런식으로 시작값~끝값의 숫자를 랜덤으로 뽑아주도록 하는 것이 랜덤함수이다.

random으로 range를 first number ~ last number로 해서 숫자를 뽑는다는 뜻이다.

 

다음에는 if문을 잘 봐야한다.

lotto라는 list에서 .count를 통해 이미 뽑은 숫자들을 확인하면서,

==0을 통해 만약 한 번도 출력이 되지 않았다면,

.append를 함으로써 num값을 lotto라는 list에 추가를 해주는 것이다 (아래와 같이 코드가 작성된다)

if lotto.count(num)
	lotto.append(num)

 

다음으로 6개의 숫자를 뽑기 위해서 len()를 통해 리스트의 길이가 6이 넘어갈 때, 즉 7이 될 때 break를 한다.

if len(lotto) > 6:
        break

 

그리고 마지막으로 추첨된 로또 번호들을 출력해주면 된다!

for i in range(0, 6): 
    print("%d " %lotto[i], end="")

참고로 만약 숫자가 오름차순으로 정렬이 되기를 원한다면 sort()를 사용하는 것도 가능하다.

lotto.sort()

 


 

완성된 코드는 이렇게 된다

파이썬으로 간단한 계산기 만들기 프로그램이다.

일단 나눗셈의 경우 integer(정수) 값만 출력이 되는 것으로 했다.


코드 작성 순서는 다음과 같다

 

1. 전역변수를 설정한다.

2. calc()함수를 만든다.

3. 메인코드를 통해 총 4번 반복을 해서 사칙연산을 한 번씩 출력해볼 수 있도록 한다.

4. 계산연산자(oper)와 숫자 2개(var1, var2)를 받는다.

5. calc함수를 불러와서 계산한다.

6. 출력한다.

 


 

 

+ Recent posts