Joonas' Note

Joonas' Note

BOJ 17140 - 이차원 배열과 연산 본문

알고리즘/문제 풀이

BOJ 17140 - 이차원 배열과 연산

2019. 4. 15. 02:38 joonas

    링크: https://www.acmicpc.net/problem/17140

    문제

    R 연산을 기준으로 구현하고, C 연산은 행/열만 바꿔서 똑같이 진행하면 된다.

    한 행을 읽고 map과 같은 적당한 자료구조에 (수, 등장한 횟수)의 형태로 저장한다. 삽입과 조회, 수정 모두 \(O(logN)\) 만큼 걸린다.

    정렬 기준은 1. 등장한 횟수가 적은 순, 2. 수의 크기가 작은 순이다. 정렬을 위해 map에 저장된 내용을 추출한다. 반복자 등으로 자료구조를 순회하면서 (수, 등장한 횟수)를 배열로 바꿔 정렬하고, 정렬된 순서로 새로운 행에 덮어씌운다.

    바로 덮어씌워도 상관없으나, 이전 행보다 길이가 짧아지는 경우에 주의해야한다. (ex. [3, 1, 1, 1, 1, 1] → [3, 1, 1, 5, 0, 0] 또는 [3, 1, 1, 5]) 그리고 행 또는 열의 크기가 100을 넘어가는 경우와, 연산이 100번을 넘기면 -1을 출력함에 주의한다.

    정렬된 결과를 꺼내는 방법으로는 우선순위 큐을 사용할 수도 있겠다.

    코드

    '알고리즘 > 문제 풀이' 카테고리의 다른 글

    UVa 10918 - Tri Tiling  (3) 2019.04.15
    BOJ 17142 - 연구소 3  (0) 2019.04.15
    BOJ 14852 - 타일 채우기 3  (0) 2019.03.21
    BOJ 9375 - 패션왕 신해빈  (0) 2019.03.21
    프로그래머스 - 나머지 한 점  (0) 2019.03.16
    Comments