정화 코딩

매일 문제 풀기 - 8월 첫째 주 본문

PS

매일 문제 풀기 - 8월 첫째 주

jungh150c 2023. 8. 1. 03:02

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")

 

이렇게 푸는 게 맞나..? (정답)

 

Comments