-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
176 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 x<sub>i</sub>와 y<sub>i</sub>가 주어진다. (-100,000 ≤ x<sub>i</sub>, y<sub>i</sub> ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.</p> | ||
|
||
|
||
|
||
## 출력 | ||
|
||
|
||
<p>첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.</p> | ||
|
||
|
||
|
||
## 소스코드 | ||
|
||
[소스코드 보기](좌표%20정렬하기%202.cpp) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 not shown.