취준생의 코딩테스트 연습기

[SWEA] 4836 [파이썬 S/W 문제해결 기본] 2일차 - 색칠하기 / 파이썬(python) 본문

코딩테스트/SWEA

[SWEA] 4836 [파이썬 S/W 문제해결 기본] 2일차 - 색칠하기 / 파이썬(python)

Jiwon_C 2021. 3. 27. 21:23

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

# 문제 링크

swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVF-WqqecDFAWg&&

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

# Soultion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
= int(input())
 
for tc in range(1,t+1):
    r_li = set() # set은 add를 이용해 추가가능
    b_li = set()
    n = int(input())
    for _ in range(n):
        li = list(map(int,input().split()))
        if li[-1]==1# red
            for x in range(li[0],li[2]+1):
                for y in range(li[1],li[3]+1):
                    r_li.add((x,y))
        else:
            for x in range(li[0],li[2]+1):
                for y in range(li[1],li[3]+1):
                    b_li.add((x,y))
                    
    paint = len(r_li) - len(r_li - b_li)
    print("#"+str(tc),paint)
 
cs

 

4. 5. list를 이용하려다가 set()을 사용하여 중복이 제거되도록 하였다.

9. 영역이 빨간색이면, r_li에 각 좌표들을 넣음

10. 11. 2중 포문을 이용하여 색칠된 모든 x, y 좌표를 구하여 리스트에 추가

13. 영역이 파란색이면, b_li에 각 좌표들을 넣음

14. 15. 위와 같은 방법으로 파란색인 부분의 x, y좌표 넣기

18. 10x10격자의 파란색과 빨간색인 부분의 좌표들을 모두 구했으므로, 겹치는 좌표의 개수를 구한다. 

 

 

Comments