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);
}