본문 바로가기
✨ Club/Ec.crew 코딩 스터디

Ec.crew 2기 2회차 팀대항전 문제

by 정람지 2022. 9. 9.

정기모임을 위한 공간 대여에 문제가 있었다..

그래서 위기를 기회로 삼아 팀 대항전을 준비했다!

다들 재밌다고 해서 다행이당

종종 해야겠다.

우리가 성취감을 느끼기 좋은 난이도의 문제는 브론즈 5 - 실버 3 사이 문제인 것 같으니 이 단계를 좀 더 넣어야겠다.


<백준 2712번 미국 스타일>

소수점 있으니까 float

 

소수점 4자리에서 끊기

round() 쓰면 소수점 자리가 0일 시 제대로 작동하지 않는다.   ex) 3.0000 이런거

'{:.4f}'.format(숫자)    포맷을 써야 함

근데 띄어쓰기로 포맷 써야 해서( 자료형 다르면 + 쓰기 불가)

변수로 두번 처리함!

포맷 쓴 거 변수에 넣을 수 있군

from sys import stdin
N = int(stdin.readline())
for i in range(N):
    NList = list(map(str, stdin.readline().split()))
    if NList[1] == 'kg':
        result = float(NList[0])*2.2046
        rere = ('{:.4f}'.format(result))
        print("{} {}".format(rere,"lb"))
    elif NList[1] == 'lb':
        result = float(NList[0])*0.4536
        rere = ('{:.4f}'.format(result))
        print("{} {}".format(rere,"kg"))
    elif NList[1] == 'l':
        result = float(NList[0])*0.2642
        rere = ('{:.4f}'.format(result))
        print("{} {}".format(rere,"g"))
    else:
        result = float(NList[0])*3.7854
        rere = ('{:.4f}'.format(result)) 
        print("{} {}".format(rere,"l"))

맞았습니다!!


<백준 1004번 어린 왕자>

나오고 들어올 때 세기! 

 

절댓값 구하기

abs()

from sys import stdin
N = int(stdin.readline()) # 테스트 케이스
for _ in range(N):
    AX,AY,BX,BY = map(int, stdin.readline().split()) # 출발지, 도착지
    n =  int(stdin.readline()) # 행성 개수
    nList = [ list(map(int,stdin.readline().split())) for _ in range(n)] # 행성 크기
    result = 0
    for i in range(n):
        if abs(nList[i][0]-AX) < nList[i][2]:
            if abs(nList[i][1] - AY) < nList[i][2]:
                result += 1
        elif abs(nList[i][0]-BX) < nList[i][2]:
            if abs(nList[i][1] - BY) < nList[i][2]:
                result += 1
    print(result)

틀렸습니다..

 

생각을 잘못한 것 ->

엑스축 와이축 차이 따로따로 반지름이랑 비교한 것

반지름이 1인 원에서 출발점과 원중심이 엑스축 0.8. 와이축 0.8 떨어져 있으면 원 안에 있지 않다..

 

빠뜨린 것->

출발점이랑 도착점이 둘다 행성계 안에 있는 경우도 체크가 된다

from sys import stdin
N = int(stdin.readline()) # 테스트 케이스
for _ in range(N):
    AX,AY,BX,BY = map(int, stdin.readline().split()) # 출발지, 도착지
    n =  int(stdin.readline()) # 행성 개수
    nList = [ list(map(int,stdin.readline().split())) for _ in range(n)] # 행성 크기
    result = 0
    for i in range(n):
        if ((nList[i][0]-AX)**2 + (nList[i][1] - AY)**2) < (nList[i][2])**2 and (nList[i][0]-BX)**2 + (nList[i][1] - BY)**2 < (nList[i][2])**2:
            pass
        elif ((nList[i][0]-AX)**2 + (nList[i][1] - AY)**2) < (nList[i][2])**2:
                result += 1
        elif ((nList[i][0]-BX)**2 + (nList[i][1] - BY)**2) < (nList[i][2])**2:
                result += 1
    print(result)

성공했습니다!!

 

원래는 더한 값에 0.5를 제곱시켜서 제곱근 구해 반지름이랑 비교시켰는데 이러면 답이 안 나왔다..

파이썬이 잘라먹는 게 있나??

그래서 반지름을 제곱시켰더니 됐다

 

math 모듈 - sqrt
(math.sqrt(값))
이런 것도 있는데 나중에 써봐야겠다


시상식~!


백준 실버 3 승급~!~!~!~!

올해 안에 골드 진급 목표!!