정화 코딩
매일 문제 풀기 - 8월 첫째 주 본문
7/31. Hello World (백준 2557번)
https://www.acmicpc.net/problem/2557
#python
print("Hello World!")
(정답)
7/31. 사칙연산 (백준 10869번)
https://www.acmicpc.net/problem/10869
#python
a, b = map(int, input().split(" "))
print(a + b)
print(a - b)
print(a * b)
print(a // b)
print(a % b)
(정답)
7/31. 최소, 최대 (백준 10818번)
https://www.acmicpc.net/problem/10818
#python
n = int(input())
data = list(map(int, input().split(" ")))
min = data[0]
max = data[0]
for i in range (1, len(data)) :
if data[i] > max :
max = data[i]
if data[i] < min :
min = data[i]
print(min, max)
(정답) 솔브닥 class 1+를 뿌시기 위해!! 오늘은 간단한 문제 3개만 풀었다.
8/2. 문자열 반복 (백준 2675번)
https://www.acmicpc.net/problem/2675
#python
countNum = int(input())
count = 0
while count < countNum :
count += 1
n, string = map(str, input().split(" "))
n = int(n)
data = list(string)
for i in range(0, len(data)) :
print(data[i] * n, end = "")
print("")
입력을 보면 한줄에 문자 개수랑 문자열이 같이 나와있어서 어떻게 할까 했는데, 문자열에 * 하면 되는 거 까먹고 이중 반복문 쓸 뻔 했다!! (정답)
8/2. 구구단 (백준 2739번)
https://www.acmicpc.net/problem/2739
#python
num = int(input())
for i in range (1, 10) :
print(num, "*", i, "=", num*i)
(정답)
8/2. A+B - 3 (백준 10950번)
https://www.acmicpc.net/problem/10950
#python
countNum = int(input())
count = 0
while count < countNum :
count += 1
num1, num2 = map(int, input().split(" "))
print(num1 + num2)
(정답)
8/2. A+B - 4 (백준 10951번)
https://www.acmicpc.net/problem/10951
#python
while True :
try :
a, b = map(int, input().split(" "))
print(a+b)
except :
break
입력이 끝날 때까지 출력하는 법. 처음에는 input()이 NULL일 때 종료하도록 코드를 작성했다. 그래서 파이썬에서 NULL인지 아닌지 체크하는 방법인 while data is not None 으로 했는데 런타임 에러가 났다. 내가 그냥 코드 자체를 잘못 짠 걸 수도 있다... (오답) 이런 형식의 문제에서는 파일의 끝을 나타내는 문자가 읽혔을 때 종료되도록 해야한다고 한다. 그래서 그 이후에는 EOF를 검색해서 알아봤다. 찾아보니 입력이 끝날 때까지 출력하려면 try, except를 사용해야 한다고 한다. input() 함수는 파일의 끝일 때 EOFError를 발생한다. 즉, except : 대신 except EOFError : 라고 써도 되는 것이다. (정답)
8/2. A+B - 5 (백준 10952번)
https://www.acmicpc.net/problem/10952
#python
a, b = map(int, input().split())
while True :
print(a + b)
a, b = map(int, input().split())
if (a == 0) and (b == 0) :
break
A+B - 4 보다는 간단했던 문제. 다만, 파이썬에서 논리연산자가 and, or, not 이었다는 것을 까먹고 있었다. (정답) 오늘도 class+을 위한 쉬운 문제들을 풀었다.
8/3. 아스키 코드 (백준 11654번)
https://www.acmicpc.net/problem/11654
#python
data = input()
print(ord(data))
ord(문자)는 문자를 아스키 코드로 변환하고, chr(숫자)는 아스키 코드를 문자로 변환한다. 그리고 새롭게 안 사실! 파이썬에는 char이라는 자료형이 없다. 대신 전부 str형인데, string[0]처럼 인덱스를 활용에 특정 위치의 문자에 접근할 수 있다. (정답)
8/3. 새싹 (백준 25083번)
https://www.acmicpc.net/problem/25083
#python
print(" ,r\'\"7\nr`-_ ,\' ,/\n \\. \". L_r'\n `~\\/\n |\n |")
처음엔 이거 출력을 그대로 붙여 넣으니까 바로 빨간줄이 생겨서 어떻게 하는거지 했는데, 이스케이프 문자와 관련된 문제였다. 일단 결과값을 붙여넣고 전체를 ""로 묶어준다. 그리고 ', ", \앞에 \를 붙여준다. (정답)
8/3. 문자와 문자열 (백준 27866번)
https://www.acmicpc.net/problem/27866
#python
string = input()
index = int(input())
print(string[index-1])
(정답) 이로써 class 1+ 끝!!! 다음은 class 1++이다!
8/5. 단어 공부 (백준 1157번)
https://www.acmicpc.net/problem/1157
#python
data = input()
count = [0] * 26
for i in range (0, len(data)) :
if ord(data[i]) < 91 : #대문자일 때
count[ord(data[i]) - 65] += 1
else : #소문자일 때
count[ord(data[i]) - 97] += 1
max = 0
maxIndex = 0
maxCount = 0
for i in range (0, 26) :
if count[i] > max :
max = count[i]
maxIndex = i
for i in range (0, 26) :
if count[i] == max :
maxCount += 1
if maxCount == 1 :
print(chr(maxIndex + 65))
else :
print("?")
예전에는 문자열의 각 문자들을 원소로 하는 리스트를 만들 때 data = list(input()) 을 썼는데, 생각해보니 그럴 필요가 없었다. 애초에 파이썬에서는 문자열이 문자의 리스트의 형태로 취급되기 때문에 data = input() 이라고만 해도 data[0] 이런식으로 인덱스를 활용할 수 있는 것이었다... 암튼 아스키 코드로 변환 후 숫자를 보고 대문자인지 소문자인지 체크하고 카운트 했다. 그 중 최댓값을 우선 찾고 최댓값과 같은 값이 하나인지 여러개인지 체크했다. 좀 비효율적인 것 같긴 하지만... (정답)
8/5. 시험 성적 (백준 9498번)
https://www.acmicpc.net/problem/9498
#python
score = int(input())
if score >= 90 :
print("A")
elif score >= 80 :
print("B")
elif score >= 70 :
print("C")
elif score >= 60 :
print("D")
else :
print("F")
(정답)
8/5. 고양이 (백준 10171번)
https://www.acmicpc.net/problem/10171
#python
print("\\ /\\\n ) ( \')\n( / )\n \\(__)|")
(정답)
8/5. 개 (백준 10172번)
https://www.acmicpc.net/problem/10172
#python
print("|\\_/|\n|q p| /}\n( 0 )\"\"\"\\\n|\"^\"` |\n||_/=\\\\__|")
(정답)
8/6. 윤년 (백준 2753번)
https://www.acmicpc.net/problem/2753
#python
year = int(input())
yoon = 0
if ( year % 4 == 0 and year % 100 != 0 ) or year % 400 == 0 :
yoon = 1
print(yoon)
(정답)
8/6. 음계 (백준 2920번)
https://www.acmicpc.net/problem/2920
#python
data = input()
if data == "1 2 3 4 5 6 7 8" :
print("ascending")
elif data == "8 7 6 5 4 3 2 1" :
print("descending")
else :
print("mixed")
이렇게 푸는 게 맞나..? (정답)
'PS' 카테고리의 다른 글
매일 문제 풀기 - 8월 셋째 주 (0) | 2023.08.15 |
---|---|
매일 문제 풀기 - 8월 둘째 주 (0) | 2023.08.07 |
매일 문제 풀기 - 7월 다섯째 주 (0) | 2023.07.26 |
매일 문제 풀기 - 7월 넷째 주 (0) | 2023.07.18 |
매일 문제 풀기 - 7월 셋째 주 (0) | 2023.07.11 |