코딩,해볼까

05.18. 팀원들과 알고리즘 풀이 / 백준 / 별찍기 윤년 고양이 백발백준 본문

Back/TIL

05.18. 팀원들과 알고리즘 풀이 / 백준 / 별찍기 윤년 고양이 백발백준

떠굥 2023. 5. 18. 13:31

0.  오늘 배운 것

0-1. 풀기로 정한 문제집 

0-2. 오늘의 문제

 


1.  문제점

백준은 input값을 받아야하는데, 익숙하지가 않아서 문제를 풀 때 알고 있었음에도 실수를 했다.

map(int,input().split(' ’))
map(형변환 함수, 함수 내용, iterable한 값)

 

그리고 추가적으로 런타임 에러가 발생하는 것을 막아주는 함수를 알려주셨다.

import sys
input = sys.stdin.readline

 


2. 시행착오 및 해결방법

1. 별 찍기 - 1

input = sys.stdin.readline
for i in range(1, int(input())+1):
    i = i*'*'
    print(i)
    
    # print("*"*i)
def solution(n):
    if n <= 1:
        return n
    print("*" * solution(n - 1))
    return n

#  n == 5
# i = 5 , n = 5
# i = 4 , n = 4
# i = 3 , n = 3
# i = 2 , n = 2
# i = 1 , n = 1

# 재귀
# solution(int(input())+1)

# 반복문
# print("".join([f"{'*' * i}\n" for i in range(1, int(input()) + 1)]))

 

2. 윤년 : 조건이 여러가지라는 생각을 하지 못했다.

# 다시 풀어서 정답을 봤는데, ()괄호가 없으니 계속 실패했다.
y = int(input())

if y % 4 == 0 and (y % 400 == 0 or y % 100 != 0):
    print(1)
else:
    print(0)
# 한줄코딩
print(1 if(y % 4 == 0 and  y % 100 != 0 or y % 400 == 0) else 0)

# 여집합으로 풀이
if y % 4 or (y % 100 == 0 and y % 400):
    print(0)
else:
    print(1)

 

3. 고양이 

cat = '\\    /\\\n )  ( \')\n(  /  )\n \\(__)|'
print("""\    /\\
 )  ( ')
(  /  )
 \(__)|
""")

 

 

4. 백발백준 : 문제 구상부터 실패하여 팀원분들의 힌트로 풀어보았다.

# 원 모양으로 생긴 두 과녁이 겹치는 부분이 존재하는지 확인하는 프로그램을 작성해보자.
# 점과 점으로 겹칠 때는 포함하지 않는다. **

X1, Y1, R1 = map(int,input().split(' '))
X2, Y2, R2 = map(int,input().split(' '))

d = ((X1 - X2)**2 + (Y1 - Y2)**2)**0.5
r = R1 + R2

if d >= r:
    print('NO')
else:
    print('YES')

 

 

  1. 우선 두 동그라미 간의 거리를 알아보기 위해 점과 점 사이의 거리를 알아본다.
  2. 두 원이 겹치기 위해서는 두 원의 반지름의 길이(r)를 더하여서 1번의 거리(d)와 비교했을 때, r이 더 작아야 한다.  
  3. 비교했을 때 d가 r보다 크거나 같으면 NO를, 아니라면 YES를 출력하도록 한다.

점과 점 사이를 구하는 공식

# 한줄코딩
print("YES" if ((x1 - x2) ** 2) + ((y1 - y2) ** 2) < (r1+r2)**2 else "NO")

 


3. 알게된 점

재귀함수 맛보기

if 문에 and, or 사용하기

점과 점 사이 구하기 공식

제곱과 루트를 식으로 표현하는 방법 (**2, **0.5)

이스케이프 시퀸스와 (""" """)

 


 

팀원들과 함께할 알고리즘 레포지토리

..gitmessage.txt 로 전달

 

GitHub - sungsu05/B2Coin_algorithm

Contribute to sungsu05/B2Coin_algorithm development by creating an account on GitHub.

github.com

 

Comments