[C++, 프로그래머스 - Lv.0] 안전지대

2023. 7. 19. 02:38·코테/프로그래머스


[C++, 프로그래머스 - Lv.0] 안전지대

사용 언어 : C++

 

< 문제 내용 >

< 생각 >

간단하게 설명하자면, 폭탄 위치와 폭탄이 영향이 닿는 범위를 비안전지대로 전환하고, 주어진 맵의 안전지대가 총 몇 칸인지 반환하는 문제였다.

 

X와 Y값이 주어지면 8방향을 체크하는 aroundCheck 함수를 만들어서 맵에 폭탄이 설치되어 있을 경우(값이 1이라면),

폭탄 가중치(999)를 폭탄 위치에 할당해주고, aroundCheck 함수를 통해서 해당 위치의 8방향에 폭탄 가중치를 할당한다.

 

이후, 모든 맵에 대해서 똑같이 계산을 진행해주고, 다시 모든 맵을 순회하면서 answer를 도출하면 된다.

 

< 해결 내용 >

#include <string>
#include <vector>

using namespace std;

void aroundCheck(int x, int y, vector<vector<int>>& board)
{
	int aroundPosX = 0;
	int aroundPosY = 0;

	for (int i = -1; i <= 1; ++i) 
	{
		for (int j = -1; j <= 1; ++j) 
		{
			aroundPosX = x + i;
			aroundPosY = y + j;

			if (aroundPosX < 0 || aroundPosX >= board.size() || aroundPosY < 0 || board.size() <= aroundPosY)
			{
				continue;
			}

			if (board[aroundPosX][aroundPosY] == 0)
			{
				board[aroundPosX][aroundPosY] = 999;
			}
		}
	}
}

int solution(vector<vector<int>> board)
{
	int answer = board.size() * board.size();

	for (int i = 0; i < board.size(); ++i) 
	{
		for (int j = 0; j < board.size(); ++j) 
		{
			if (board[i][j] == 1) 
			{
				board[i][j] = 999;
				aroundCheck(i, j, board);
			}
		}
	}

	for (int i = 0; i < board.size(); ++i)
	{
		for (int j = 0; j < board.size(); ++j)
		{
			if (board[i][j] == 999)
			{
				answer--;
			}
		}
	}
	
	return answer;
}

 

< 이후 생각 >

해당 문제를 풀고 다시 생각해보니까, for문으로 8방향을 확인하는 것 보다는 배열을 통해서 확인을 해주는 것이 비용이 더 싸게 먹히지 않을까 싶다.

 

또, 폭탄 가중치가 주어질 때, 포지션을 저장하고 있다가, 포지션의 길이만큼 answer에서 빼주는 형식으로 진행했다면 2중 for문의 사용을 줄일 수 있을 것 같다.

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

[C++, 프로그래머스 - Lv.0] 주사위 게임 3  (0) 2023.07.19
[C++, 프로그래머스 - Lv.0] 연속된 수의 합  (0) 2023.07.19
[C++, 프로그래머스 - Lv.0] 겹치는 선분의 길이  (0) 2023.07.04
[C++, 프로그래머스 - Lv.0] 정수를 나선형으로 배치하기  (0) 2023.07.04
[C++, 프로그래머스 - Lv.0] 옹알이 (1)  (0) 2023.07.04
'코테/프로그래머스' 카테고리의 다른 글
  • [C++, 프로그래머스 - Lv.0] 주사위 게임 3
  • [C++, 프로그래머스 - Lv.0] 연속된 수의 합
  • [C++, 프로그래머스 - Lv.0] 겹치는 선분의 길이
  • [C++, 프로그래머스 - Lv.0] 정수를 나선형으로 배치하기
태역
태역
  • 태역
    RYULAB
    태역
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 언어
        • C
        • C++
        • C#
      • 엔진, 프레임워크
        • Unity
        • Unreal
        • Electron
      • 공부 N
        • 디자인 패턴
        • 수학
        • CS N
        • Git
        • 알고리즘
        • 자료구조
      • 코테
        • 프로그래머스
        • 백준
      • 독서
        • Effective C#
        • CLR via C#
        • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
        • 오브젝트
        • CSAPP
        • OSTEP
      • 프로젝트
        • Unity
      • 개발 일지
        • 퓨처리티
        • 골든타임
      • 활동
        • 게임잼 후기
        • 게임제작동아리 브릿지
        • 크래프톤 정글
        • 기타
      • 기타
  • 블로그 메뉴

    • 링크

    • 공지사항

      • 2024 04 17
    • 인기 글

    • 태그

      티스토리챌린지
      오블완
      인프런 #인프런강의후기 #게임개발 #게임개발강의 #인강후기 #강의후기 #게임개발자 #인프런강의
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    태역
    [C++, 프로그래머스 - Lv.0] 안전지대
    상단으로

    티스토리툴바