Skip to content

Commit

Permalink
BOJ-EX: 6/18/2024, 10:55:18 PM
Browse files Browse the repository at this point in the history
  • Loading branch information
fkdl0048 committed Jun 18, 2024
1 parent 1e2f0f2 commit 0d9bc9a
Show file tree
Hide file tree
Showing 5 changed files with 176 additions and 0 deletions.
34 changes: 34 additions & 0 deletions 11651번: 좌표 정렬하기 2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 11651번: 좌표 정렬하기 2 - <img src="https://static.solved.ac/tier_small/6.svg" style="height:20px" /> Silver V

<!-- performance -->

<!-- 문제 제출 후 깃허브에 푸시를 했을 때 제출한 코드의 성능이 입력될 공간입니다.-->

<!-- end -->

## 문제

[문제 링크](https://boj.kr/11651)


<p>2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.</p>



## 입력


<p>첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다.&nbsp;둘째 줄부터 N개의 줄에는 i번점의 위치 x<sub>i</sub>와 y<sub>i</sub>가 주어진다. (-100,000 ≤ x<sub>i</sub>, y<sub>i</sub>&nbsp;≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.</p>



## 출력


<p>첫째 줄부터 N개의 줄에 점을 정렬한&nbsp;결과를 출력한다.</p>



## 소스코드

[소스코드 보기](좌표%20정렬하기%202.cpp)
21 changes: 21 additions & 0 deletions 11651번: 좌표 정렬하기 2/좌표 정렬하기 2.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/* ************************************************************************** */
/* */
/* ::: ::: ::: */
/* Problem Number: 11651 :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: fkdl4878 <boj.kr/u/fkdl4878> +#+ +#+ +#+ */
/* +#+ +#+ +#+ */
/* https://boj.kr/11651 #+# #+# #+# */
/* Solved: 2024/06/18 22:08:28 by fkdl4878 ### ### ##.kr */
/* */
/* ************************************************************************** */

#include <bits/stdc++.h>

using namespace std;

int main()
{
int n;
vector
}
40 changes: 40 additions & 0 deletions 1996번: 지뢰 찾기/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# 1996번: 지뢰 찾기 - <img src="https://static.solved.ac/tier_small/6.svg" style="height:20px" /> Silver V

<!-- performance -->

<!-- 문제 제출 후 깃허브에 푸시를 했을 때 제출한 코드의 성능이 입력될 공간입니다.-->

<!-- end -->

## 문제

[문제 링크](https://boj.kr/1996)


<p>다들 windows에서 지원하는 지뢰 찾기 게임을 한번쯤은 해 보았을 것이다. 특히 동호는 지뢰찾기의 매니아로 알려져 있다. 지뢰 찾기 map은 N*N의 정사각형 모양으로 각 칸에는 숫자가 들어가 있거나 지뢰가 들어가 있다. 빈 칸에는 숫자 0이 들어있다고 생각하자.</p>

<p>map의 어떤 칸에 적혀 있는 숫자는, 그 칸과 인접해 있는 여덟 개의 칸 중에서 지뢰가 들어 있는 칸이 몇 개인지를 나타내 준다. 물론 인접한 칸이 map 내부에 있는 경우에 대해서만 생각하면 된다. 예제를 보면 더 잘 이해할 수 있을 것이다.</p>

<p>이번 문제는 조금 업그레이드 된 지뢰 찾기로, 한 칸에 한 개의 지뢰가 있는 것이 아니고, 한 칸에 여러 개(1 이상 9 이하)의 지뢰가 묻혀 있는 게임이다. 따라서 map의 어떤 칸에 적혀 있는 숫자는, 그 칸과 인접해 있는 여덟 개의 칸들에 들어 있는 지뢰의 총 개수가 된다.</p>

<p>이미 windows 지뢰찾기 같은 것을 마스터한 영식이는, map에서 지뢰에 대한 정보만이 주어졌을 때, 영식이는 map을 완성하고 싶다고 한다. N과 지뢰의 위치가 주어졌을 때, 영식이를 도와서 지뢰 찾기 map을 완성하는 프로그램을 작성하시오.</p>



## 입력


<p>첫째 줄에 N(1 ≤ N ≤ 1,000)이 주어진다. 다음 N개의 줄에는 지뢰 찾기 map에 대한 정보가 주어지는데 '.' 또는 숫자로 이루어진 문자열이 들어온다. '.'는 지뢰가 없는 것이고 숫자는 지뢰가 있는 경우로 그 칸의 지뢰의 개수이다. 한 줄은 N개의 문자로 이루어져 있다.</p>



## 출력


<p>N개의 줄에 걸쳐서 완성된 지뢰 찾기 map을 출력한다. 지뢰는 '*'로 출력하며. 10 이상인 경우는 'M'(Many)으로 출력하면 된다. map은 숫자 또는 'M' 또는 '*'로만 이루어져 있어야 한다.</p>



## 소스코드

[소스코드 보기](지뢰%20찾기.cpp)
81 changes: 81 additions & 0 deletions 1996번: 지뢰 찾기/지뢰 찾기.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/* ************************************************************************** */
/* */
/* ::: ::: ::: */
/* Problem Number: 1996 :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: fkdl4878 <boj.kr/u/fkdl4878> +#+ +#+ +#+ */
/* +#+ +#+ +#+ */
/* https://boj.kr/1996 #+# #+# #+# */
/* Solved: 2024/06/18 22:10:28 by fkdl4878 ### ### ##.kr */
/* */
/* ************************************************************************** */

// N*N의 맵 (정사각형)
// 각 칸에 숫자나 지뢰
// 각 칸의 숫자는 8방향으로 인접한 지뢰의 개수를 나타냄
// option. N*N에 속할 때만
// 지뢰는 1개만 존재하는 것이 아닌 한 셀에 여러개가 존재할 수 있다. (1~9)
// 맵에 주어진 지뢰(개수)를 받아 실제 지뢰찾기 판을 만들어라
// condition. 지뢰는 *으로 개수는 숫자로 10개 이상이라면 M으로 나타냄

// 설계
// 보드 판은 Char 2차원 벡터로
// 각 숮자 입력은 그리디로 탐색
// ? 새로운 벡터를 만들어야 할까?

#include <bits/stdc++.h>

using namespace std;

int main()
{
int n, cnt;
char c;
cin >> n;
vector<vector<char>> v(n, vector<char>(n));
vector<vector<char>> resultVector(n, vector<char>(n));
pair<int, int> dir[8] = {{1, 0}, {1, 1}, {0, 1}, {-1, 1}, {-1, 0}, {-1, -1}, {0, -1}, {1, -1}};

for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
cin >> v[i][j];
}
}

int xPos, yPos;
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){

c = v[i][j];

if (isdigit(c)){
resultVector[i][j] = '*';
}
else{
cnt = 0;
for (int k = 0; k < 8; k++){
xPos = j + dir[k].first;
yPos = i + dir[k].second;
if ((xPos < 0 || xPos >= n) || (yPos < 0 || yPos >= n))
continue;

c = v[yPos][xPos];
if (isdigit(c)){
cnt += c - '0';
}
}
if (cnt >= 10)
resultVector[i][j] = 'M';
else
resultVector[i][j] = '0' + cnt;
}
}
}

for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
cout << resultVector[i][j];
}
cout << '\n';
}
}
Binary file added 1996번: 지뢰 찾기/지뢰 찾기.exe
Binary file not shown.

0 comments on commit 0d9bc9a

Please sign in to comment.