-
[Baekjoon - 18242] 네모네모 시력검사문제 풀이/Baekjoon Online Judge 2023. 2. 13. 14:47
난이도: Silver V
태그
더보기- Implementation
- Ad-Hoc
풀이
1. 일단 사각형을 찾자.
더보기사각형의 모든 위치를 찾는 건 아무래도 어렵고, 불필요할 정도로 많은 정보입니다.
대신에, 사각형의 좌측 상단과 우측 하단의 위치만 알고 있다면,
그걸 토대로 한 사각형을 다시 만들 수 있으므로 문제없겠죠.
2. 구멍이 뚫릴 수 있는 부분은?
더보기각 변의 중점입니다.
이는, 한 축은 사각형의 중심에 있고, 다른 한 축은 사각형의 끝점에 위치해있다는 소리죠.
// 예로, (중심, 왼쪽 끝)은 왼쪽 변에 뚫린 구멍을 의미합니다.
// (위쪽 끝, 중심)은 위쪽 변에 뚤린 구멍이죠.
그러니, 이렇게 찾을 수 있는 4개의 좌표에 대해, 진짜 구멍이 뚫렸는지 판별하고,
만약 구멍이 뚫렸다면 그 위치에 해당하는 방향을 출력해주면 됩니다.
3. 코드
더보기12345678910111213141516171819202122char mp[120][120];void Main(){int n, m; cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){ cin >> mp[i][j]; }}pi2 st = {-1, -1}, ed = {-1, -1};for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (mp[i][j] == '#'){if (st.fr == -1){ st = {i, j}; } ed = {i, j};}}}int yst = st.fr, yed = ed.fr; int ym = yst+yed >> 1;int xst = st.sc, xed = ed.sc; int xm = xst+xed >> 1;if (mp[yst][xm] == '.'){ cout << "UP"; }if (mp[yed][xm] == '.'){ cout << "DOWN"; }if (mp[ym][xst] == '.'){ cout << "LEFT"; }if (mp[ym][xed] == '.'){ cout << "RIGHT"; }}cs '문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
[Baekjoon - 24413] Tic-Tac State (0) 2023.02.13 [Baekjoon - 3189] tomo (0) 2023.02.13 [Baekjoon - 14730] 謎紛芥索紀 (Small) (0) 2023.02.13 [Baekjoon - 3566] 대형 스크린 (0) 2023.02.13 [Baekjoon - 10821] 정수의 개수 (0) 2023.02.13