MS's log
  • HOME
  • TAG
  • GUESTBOOK
  • ADMIN
Close

Who am I?

  • github.com/mskim9967

Category

  • 분류 전체보기 (121)
    • 대회, 프로젝트 (21)
      • 2021 국방 공공데이터 경진대회 (1)
      • 2021 군장병 해커톤 (16)
      • 2021 UNI-DTHON (1)
    • Study (58)
      • Backend (29)
      • Infra, DevOps (9)
      • Frontend (14)
      • Data Structure (6)
    • Coding Test (40)
      • Codeforces (1)
      • 백준 (10)
      • codeground (19)
      • 프로그래머스 (9)

Recent Post

Popular Post

Comment

Tags

  • rn
  • React Native
  • 군대공부
  • DevOps

Visitor Counter

어제

오늘

전체

프렌즈4블럭 / 2018 KAKAO BLIND RECRUITMENT 1차
By _MS
Coding Test/프로그래머스
2021. 8. 29. 23:12

문제

문제 읽기

해결

  • 구현
  • chk 배열에 없어져야 할 블럭을 체크
  • update()로 게임판 업데이트, 없어지는 블럭의 수를 반환

소스코드

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

    Writer
    MyungSeung Kim(mskim9967@gmail.com)
*/

#include <bits/stdc++.h> 
using namespace std;

char bd[30][30];
bool chk[30][30];

void check(int x, int y) {
    if(bd[y][x] != 0 && bd[y][x] == bd[y + 1][x] && bd[y][x] == bd[y][x + 1] && bd[y][x] == bd[y + 1][x + 1])
        chk[y][x] = chk[y + 1][x] = chk[y][x + 1] = chk[y + 1][x + 1] = true;
}

int update(int m, int n) {
    int cnt = 0;
    for(int y = m - 1; y >= 0; y--) // 위에서 아래로
        for(int x = 0; x < n; x++)
            if(chk[y][x]) {
                cnt++;
                for(int yy = y; yy < m; yy++) 
                    bd[yy][x] = (yy == m - 1) ? 0 : bd[yy + 1][x];
            }
    return cnt;
}

int solution(int m, int n, vector<string> board) {
    int ans = 0;
    for(int y = 0; y < m; y++)
        for(int x = 0; x < n; x++) 
            bd[m - y - 1][x] = board[y][x];

    while(true) {
        memset(chk, 0, sizeof(chk));
        for(int y = 0; y < m - 1; y++)
            for(int x = 0; x < n - 1; x++) 
                check(x, y);
        int blockCnt = update(m, n);
        if(blockCnt == 0) break; // 깰 블럭이 없으면 종료
        ans += blockCnt;
    }

    return ans;
}
저작자표시 동일조건 (새창열림)

'Coding Test > 프로그래머스' 카테고리의 다른 글

로또의 최고 순위와 최저 순위 / 2021 Dev-Matching: 웹 백엔드 개발자  (0) 2021.10.29
피로도 / 12주차 위클리 챌린지  (0) 2021.10.29
셔틀버스 / 2018 KAKAO BLIND RECRUITMENT 1차  (0) 2021.08.29
캐시 / 2018 KAKAO BLIND RECRUITMENT 1차  (0) 2021.08.28
뉴스 클러스터링 / 2018 KAKAO BLIND RECRUITMENT 1차  (0) 2021.08.28
MS's log :: _MS
Contact
Github

Copyright MS's log

Designed by MemoStack

Unicons by Iconscout

티스토리툴바