오류 및 알고리즘정리본

17. 백준 알고리즘 고양이, 백발백중, 별찍기1

츄98 2023. 5. 18. 13:49

오랜만에 푸는 알고리즘~ 일주일 만인가..ㅎㅎ

손 푸는 느낌으로 오늘은 4문제를 풀어보았다.

그 중 3문제의 풀이를 정리해보자!

 

 

1. 고양이

이렇게 출력하면 되는 문제

 

고양이 문제를 풀기 위해서 알고있어야 하는 역슬래쉬 사용법..!! 

(이거 잘못 쓰면, 출력형식이 잘못되었다는 에러메세지만 잔뜩 나온다 ^^)

\: 역슬래시 기호를 단일로 사용할 경우 'escape'의 성격을 띄며 원래의 의미를 벗어나 새로운 기능을 하게 됨.

\n: 줄바꿈 기호.

\": 큰 따옴표를 그냥 쓰게 되면 다른 의미로 받아들여 큰 따옴표를 직접 쓸 때 역슬래시를 써줌.

\': 작은 따옴표 또한 큰 따옴표와 같다.

\\: 역슬래쉬 하나를 출력한다.

 

내 풀이는 다음과 같다.

# 고양이 내 풀이
cat = ["\    /\\", " )  ( ')", "(  /  )", " \(__)|"]
for i in cat:
    print(i, sep='/n')

 

다른 사람의 풀이 중 이렇게 print로 바로 구하는 풀이도 있었다.

print("""\    /\\
 )  ( ')
(  /  )
 \(__)|
""")

""" """ 이렇게 하면, 알아서 줄바꿈을 해준다~!!

 

 

 

2. 백발백중

원의 중심 사이의 거리와 반지름의 합의 크기 비교를 하여 구하면 되는 문제이다.

 

# 백발백중 내 풀이
# import math
# math.sqrt()를 쓰면 루트(0.5제곱)을 쓸 수 있다. 이를 사용해서 문제를 풀어도 좋다.

import sys
input = sys.stdin.readline

x1, y1, r1 = map(int, input().split())
x2, y2, r2 = map(int, input().split())

if ((x1-x2)**2 + (y1-y2)**2) >= (r1+r2)**2:
    print("NO")
else:
    print("YES")
import math
import sys
input = sys.stdin.readline

x1, y1, r1 = map(int, input().split())
x2, y2, r2 = map(int, input().split())

if math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) >= math.sqrt((r1 - r2)**2):
	print("NO")
else:
	print("YES")

 

 

 

3. 별찍기1

 

# 별찍기 내 풀이
import sys
input = sys.stdin.readline
for i in range(int(input())):
    print('*'*(i+1))

 

이 문제는 재귀로도 풀 수 있다...!!!

# 재귀로 풀기
def solution(n):
    if n<=1:
        return n
    print("*"*solution(n-1))
    return n

solution(int(input())+1)