C++

[C++] 5월 26일 코딩 테스트 수업

k-codestudy 2025. 5. 26. 17:47

프로그래머스 LV.5 방의 개수

 

미완성 

 

#pragma once
#include <set>
#include <map>

class C_ROOM
{

private:
	std::map<long long, int> m_mapNode;
	std::set<long long> m_setResult;
	int m_nX;
	int m_nY;

private:
	long long makeId(int nX, int nY);
	void loadId(long long llId, int& nX, int& nY);

public:
	C_ROOM() = default;
	void init();
	void move(int nWay);
	void result();
};

 

#include "room.h"

long long C_ROOM::makeId(int nX, int nY)
{
    return (long long)nX + (long long)nY * 200000;
}

void C_ROOM::loadId(long long llId, int& nX, int& nY)
{
    nX = (int)(llId % 200000);
    nY = (int)(llId / 200000);
}

void C_ROOM::init()
{
    m_mapNode.insert({makeId(m_nX,m_nY) , -1});
}

void C_ROOM::move(int nWay)
{
    int arMove[8][2]{
        {0, -1}, {1, -1}, {1, 0}, {1, 1}, { 0, 1 },
        {-1, -1}, {-1, 0}, {-1, -1} };

    for (int i = 0; i < 2; i++)
    {
        m_nX += arMove[nWay][0];
        m_nY += arMove[nWay][1];
    }
}

void C_ROOM::result()
{
    printf("%d\n", (int)m_setResult.size());
}

 

#include <iostream>
#include "room.h"

int main()
{
    C_ROOM cRoom{};

    cRoom.init();

    cRoom.move(1);
    cRoom.move(1);
    cRoom.move(4);
    cRoom.move(4);
    cRoom.move(6);
    cRoom.move(6);
    cRoom.move(1);
    cRoom.move(7);
    cRoom.move(3);

    cRoom.result();

    //cRoom.move(2);
    //cRoom.move(7);
    //cRoom.move(2);
    //cRoom.move(5);
    //cRoom.move(0);

    //cRoom.move(6);
    //cRoom.move(6);
    //cRoom.move(6);
    //cRoom.move(4);
    //cRoom.move(4);
    //cRoom.move(4);
    //cRoom.move(2);
    //cRoom.move(2);
    //cRoom.move(2);
    //cRoom.move(0);
    //cRoom.move(0);
    //cRoom.move(0);

    //cRoom.move(1);
    //cRoom.move(6);
    //cRoom.move(5);
    //cRoom.move(5);
    //cRoom.move(3);
    //cRoom.move(6);
    //cRoom.move(0);
}