Programmers / 2단계 / [1차]프렌즈4블록 / python / 2018 KAKAO BLIND RECRUITMENT

2024. 3. 26. 22:03·코딩테스트/programmers (python)

 

https://school.programmers.co.kr/learn/courses/30/lessons/17679

 

 

모범 답안

def pop_num(b, m, n):
    pop_set = set()
    # search
    for i in range(1, n):
        for j in range(1, m):
            if b[i][j] == b[i - 1][j - 1] == b[i - 1][j] == b[i][j - 1] != '_':
                pop_set |= set([(i, j), (i - 1, j - 1), (i - 1, j), (i, j - 1)])
    # set_board
    for i, j in pop_set:
        b[i][j] = 0
    for i, row in enumerate(b):
        empty = ['_'] * row.count(0)
        b[i] = empty + [block for block in row if block != 0]
    return len(pop_set)


def solution(m, n, board):
    count = 0
    b = list(map(list, zip(*board)))  # 행열 바꾸기
    while True:
        pop = pop_num(b, m, n)
        if pop == 0: return count
        count += pop

 

 

알게된 것

 

Unpacking 역할

*는 unpacking 역할을 한다는 것을 알고 있었는가?
쉽게 말해서 괄호 안에 있던 데이터들을 풀어 각각으로 만들어 준다.

>>> list_data = [1,2,3,4,5]

>>> print(list_data)
[1, 2, 3, 4, 5]

>>> print(*list_data)
1 2 3 4 5

 


 

|=는 |의 결과를 업데이트한다는 뜻

|와 |=는 dictionary, counter, number에 사용할 수 있음

Dictionary

s1 = {"a", "b", "c"}
s2 = {"d", "e", "f"}

print(s1 | s2)
# {"a", "b", "c", "d", "e", "f"}
print(s1)
# {"a", "b", "c"}


s1 |= s2

print(s1)
# {"a", "b", "c", "d", "e", "f"}

이 글을 참고해서 파이썬 공식 문서에서 확인해보니 다음과 같았다.

Python 3.9에서 새로운 기능이 나왔는데, Dictionary Merge & Update Operators이다! 즉, 새로운 병합(merge) 연산자 (|) 와 병합 업데이트 연산자 (|=)가 나왔다.

기존의 dict.update 및 {**d1, **d2}와 같은 dictionary 병합 방법을 보완한다.

참조

https://velog.io/@nayoon-kim/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%97%B0%EC%82%B0%EC%9E%90

 

[파이썬] |= 연산자

백준 16234번 인구 이동을 풀다가 다른 분들의 코드를 참고하였는데, 잘 몰랐던 연산자를 만나게 되어서 잊지 않기 위해 글을 쓰기로 했다.. 눈으로만 보면 다 까묵음..|는 or 연산자이고 union을 뜻

velog.io

 

https://velog.io/@insutance/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B3%84%ED%91%9C-Asterisk-%EC%9D%98-%EC%97%AD%ED%95%A0

 

파이썬 별표(*), Asterisk의 역할

파이썬에서 별표(*)의 역할은 무엇이 있을까?

velog.io

 

'코딩테스트 > programmers (python)' 카테고리의 다른 글

Programmers / 2단계 / 소수 찾기 / python / 완전 탐색  (0) 2024.03.28
Programmers / 3단계 / 야근 지수 / python  (1) 2024.03.27
Programmers / 2단계 / 2 x n 타일링 / python  (0) 2024.03.25
Programmers / 3단계 / 최고의 집합 / python  (0) 2024.03.23
Programmers / 2단계 / 택배상자 / python  (0) 2024.03.22
'코딩테스트/programmers (python)' 카테고리의 다른 글
  • Programmers / 2단계 / 소수 찾기 / python / 완전 탐색
  • Programmers / 3단계 / 야근 지수 / python
  • Programmers / 2단계 / 2 x n 타일링 / python
  • Programmers / 3단계 / 최고의 집합 / python
seulll
seulll
개인 공부 / 정리 블로그입니다 https://github.com/seul1009
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (350) N
      • 코딩테스트 (238)
        • programmers (python) (159)
        • 백준 (python) (77)
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (21) N
        • Python (4)
        • Java | Spring (8)
        • Android (5)
        • Unity (3)
        • API (4)
      • CS (16) N
        • Network (6) N
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (14) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    웹크롤링
    박스플롯
    카카오맵 api
    오블완
    API
    train_test_split
    티스토리챌린지
    데이터분석
    모델 성능 평가
    asterisk
    confusion matrix
    야근 지수
    백엔드 개발자 역량
    Boxplot
    오차행렬
    그리디 알고리즘
    프로그래머스
    kakao map api
    백엔드 개발자
    대입 표현식
    2 x n 타일링
    Python
    프렌즈4블록
    바다코끼리
    Greedy
    solving environment
    파이썬
    카카오맵
    코딩테스트
    백엔드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
Programmers / 2단계 / [1차]프렌즈4블록 / python / 2018 KAKAO BLIND RECRUITMENT
상단으로

티스토리툴바