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

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

by 정람지 2022. 9. 15.

공간대여가 풀리지 않았었어서 한 2번째 코딩 팀대항전~

이제 풀려서 다음주부터는 유목민 생활 끝이다!


<10768번 특별한 날>

from sys import stdin 
M = int(stdin.readline())
D = int(stdin.readline())

if M < 2:
    print("Before")
elif M == 2:
    if D < 18:
        print("Before")
    elif D == 18:
        print("Special")
    else:
        print("After")
else:
    print("After")

<2775번 부녀회장이 될테야>

from sys import stdin 
T = int(stdin.readline())

def func(n,lists): # 다음 층의 인원수 리스트 반환 함수
    result =[]
    for i in range(n):
        rere = sum(lists[0:i+1])
        result.append(rere)
    return result

for _ in range(T):
    k = int(stdin.readline()) # 층
    n = int(stdin.readline()) # 호

    reresult = [ i+1 for i in range(n)]
    for _ in range(k):
        reresult = func(n, reresult)
    print(reresult[n-1])

수학적인 규칙을 찾아내려 햇지만 넘 어려워서 포기하고

한층씩 계산하는 함수를 만들어서 돌렸다!


<1620번 나는야 포켓몬 마스터 이다솜>

from sys import stdin 
N, M= map(int,stdin.readline().split())
pokeList = []
for _ in range(N):
    pokeList.append(stdin.readline())
for _ in range(M):
    rere = stdin.readline()
    if rere in pokeList:
        print(pokeList.index(rere)+1, )
    else:
        print(pokeList[int(rere)-1], end="")

틀렸다ㅠㅠ시간초과난다ㅜㅜ

그리고 

stdin.readline()쓰면 뒤에 \n가 붙게 되어서  end=""로 처리했는데

rstrip()으로 처리하는 것이 더 깔끔한 것 같다.

 

딕셔너리..!가 시간복잡도를 줄이는 데 효과적이라고 했다.

from sys import stdin
N, M= map(int,stdin.readline().split())
pokeList = {}
for i in range(N):
    pokeList[i+1]=(stdin.readline().rstrip())
repokeList = {v:k for k,v in pokeList.items()} 

for _ in range(M):
    rere = stdin.readline().rstrip()
    if rere.isdigit():
        print(pokeList[int(rere)])
    else:
        print(repokeList[rere])

isdigit()

 

Python에서 문자가 숫자인지 확인

이 튜토리얼은 파이썬에서 문자가 숫자인지 확인하는 방법에 대해 설명합니다.

www.delftstack.com


<1764번 듣보잡>

from sys import stdin 
N, M= map(int,stdin.readline().split()) # 듣 / 보
hear = set()
see = set()
for _ in range(N):
    hear.add(stdin.readline())
for _ in range(M):
    see.add(stdin.readline())

result = hear.intersection(see)
result = sorted(result)
print(len(result))
for cha in result:
    print(cha, end="")

sort는  알파벳순 정리도 됨..!

 

집합을 쓰기 위해서 set

 

[파이썬 기초] set 원소 추가, 삭제 방법

[파이썬 기초] set 원소 추가, 삭제 방법 set을 하나 정의합시다. >>> a={1,2,3,4,5} {1, 2, 3, 4, 5} 원소 추가 (add 메소드) >>> a.add('a') {1, 2, 3, 4, 5, 'a'} 원소 여러개 추가 (update 메소드) >>> a={1,2..

pybasall.tistory.com

 

 

[Python] set 자료형 - 교집합, 합집합, 차집합

파이썬의 집합 데이터형을 활용한 교집합, 합집합, 차집합, 대칭 차집합 구하기 1. 교집합 set1 = set([1,2,3,4,5,6]) set2 = set([3,4,5,6,8,9]) print(set1 & set2) print(set1.intersection(set2)) {3, 4, 5, 6..

pydole.tistory.com

 

 


<2563번 색종이>

from sys import stdin 

N = int(stdin.readline()) # 색종이개수
paList =[]
result = 100*N
for _ in range(N):
    x, y = map (int, stdin.readline().split())
    for i in range(len(paList)):
        
        X = 10-abs(x-paList[i][0])
        Y = 10-abs(y-paList[i][1])
        if X > 0 and Y > 0:
            rere = X*Y
            result -= rere
            
    paList.append([x,y])
print(result)

ㅠㅠ뭐가 틀린지 모르겠어서 게시판에 글을 올렸다

고수님이 반례를 찾아 주셨다.

아하.. 색종이는 하난데 또 겹치면 또 뺴버렸구나..

아 처음 생각대로 할걸! 점만 면으로 생각했으면 되는데!!!

[[0 for _ in range(100)] for _ in range(100)] 

오오

from sys import stdin 
N = int(stdin.readline()) 
papList=[[0 for _ in range(100)] for _ in range(100)]

for _ in range(N):
    x, y = map (int, stdin.readline().split())
    for X in range(x-1,x+9):
        for Y in range(y-1,y+9):
            papList[X][Y] = 1
result = 0
for cha in papList:
    result += cha.count(1)
print(result)

성공~


리스트만 쓰지 말고

set이랑 딕셔너리 사용에도 익숙해지자

끗!