[백준/C++] 2890번: 카약

2024. 3. 23. 11:14· Koala - 14기/코딩테스트 준비 스터디

https://www.acmicpc.net/problem/2890

 

2890번: 카약

첫째 줄에 R과 C가 주어진다. 다음 R개 줄에는 '.', 'S', 'F', '1'~'9'로 이루어진 위성 지도가 주어진다. 한 줄에는 최대 한 개의 카약만 있고, 위성 사진에 있는 카약은 항상 9개이다. (10 ≤ R, C ≤ 50)

www.acmicpc.net

  • 코드
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdio.h>
#include <queue>
#include <vector>
#include <unordered_map>
#include <set>
#include <map>
#include<cmath>
#include<stack>
#include<deque>
#define LL long long
using namespace std;
int arr[10];
int ord[10];
int ans[10];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	for (int i = 1; i < 10; i++) {
		ord[i] = i;
	}
	int r, c;
	cin >> r >> c;
	for (int i = 0; i < r; i++) {
		string s;
		cin >> s;
		int water = 0;
		bool team = false;
		int teamnum;
		for (int j = 0; j < c; j++) {
			if (s[j] == 'S') {
				continue;
			}
			else if (s[j] == 'F') {
				continue;
			}
			else if (s[j] == '.') {
				water++;
			}
			else {
				teamnum = s[j] - '0';
				water = 0;
			}
		
		}
		if (water != c - 2) {
			arr[teamnum]=water;
		}
		
	}
	//잘못된 코드
	/*for (int i = 1; i < 9; i++) {
		for (int j = i+1; j < 10; j++) {
			if (arr[i] > arr[j]) {
				int tmp = arr[i];
				arr[i] = arr[j];
				arr[j] = tmp;
				
				ord[i] = j;
				ord[j] = i;
			}
		}
	}*/
	//올바른 코드
	for (int i = 1; i < 9; i++) {
		for (int j = i + 1; j < 10; j++) {
			if (arr[ord[i]] > arr[ord[j]]) {
				int tmp = ord[i];
				ord[i] = ord[j];
				ord[j] = tmp;
			}
		}
	}

	ans[ord[0]] = 1;
	for (int i = 2; i < 10; i++) {
		if (arr[ord[i - 1]] != arr[ord[i]]) ans[ord[i]] = ans[ord[i - 1]] + 1;
		else ans[ord[i]] = ans[ord[i - 1]];
	}
	for (int i = 1; i < 10; i++) {
		cout << ans[i]+1 << endl;
	}
	return 0;
}
  • 문제 해설

결승선까지 남은 거리를 저장한다음 거리를 정렬해서 순위를 정하는 문제였다. 어려웠던 부분은 거리를 정렬하면서 바뀌는 팀 번호도 같이 저장되어야한다는 점이었다.

깔끔하게 풀지 못한것 같아서 다른 분들의 코드를 보니 일단 탐색을 뒤에서부터 할 생각을 못했었다. 앞에서부터 하면서 힘들게 앞의 '.'을 예외처리할 생각을 하니 코드가 지저분했다... 그리고 굳이 S와 F까지 모든 길이를 탐색해서 예외처리를 할 필요도 없었다는 것을 깨달았다...ㅎ

그러나 카약 번호와 위치를 함께 저장해야하는 부분은 다른 분들도 복잡하게 풀었던게 맞는데 vector<pair<int,int>>를 사용하면 조금더 쉽지 않았을까 싶긴했다.

저작자표시 (새창열림)

'Koala - 14기 > 코딩테스트 준비 스터디' 카테고리의 다른 글

[백준/Python] 5557 - 1학년  (0) 2024.03.24
[백준/c++] 2579번 계단 오르기  (0) 2024.03.24
[Python3/백준] 1965번:상자 넣기  (0) 2024.03.23
[BOJ|Python] 백준 5557 1학년  (0) 2024.03.22
[백준/Python] 2565 - 전깃줄  (0) 2024.03.22
'Koala - 14기/코딩테스트 준비 스터디' 카테고리의 다른 글
  • [백준/Python] 5557 - 1학년
  • [백준/c++] 2579번 계단 오르기
  • [Python3/백준] 1965번:상자 넣기
  • [BOJ|Python] 백준 5557 1학년
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1883)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (38)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (31)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • 백준
  • 파이썬
  • 백트래킹
  • BFS
  • BOJ
  • C++
  • dp
  • dfs

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[백준/C++] 2890번: 카약
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.