[C++] 16234 - 인구 이동 (골드5)
·
Coding Test/Solution
1. 문제 설명 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 2. 아이디어 처음 보자마자 무식한 방법으로 로직은 떠오르는데 탐색이 너무 많이 필요해서 통과가 될까 싶었지만 입력 조건에 인구 이동 발생 일수가 최대 2,000번밖에 되지 않는다고 했으므로 개의치 않아도 된다고 판단했다. N은 MAX 50이므로 최대 2,500크기 인접 행렬 그래프를 그릴 수 있는데, 2,000번 반복한다고 해도 5,000,000번 이므로 시간 복잡도에 걸리지 않는다. 즉, 그래프를 순회하면서 인구 차이가 L이상 R..
[C++] 21608 - 상어 초등학교 (골드5)
·
Coding Test/Solution
1. 문제 설명 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 2. 아이디어 구현 문제는 아무래도 생각할 게 많아서 귀찮다. 예외처리라던가 이런 것들. N의 최대가 20이므로 시간복잡도는 사실상 고려하지 않아도 될 정도로 작은 수다. 즉, 알고리즘이고 뭐고 구현만 할 수 있는 논리적인 아이디어만 도출한다면 귀찮은 문제지, 어려운 문제는 아니다. 나는 처음 받은 학생의 번호 순서대로 그래프를 긁으면서 배치부터 시작했다. 이건 그냥 튜플 안에다가 현재 위치에서 {좋아하는 친구 숫자, 빈 자리 숫자, y..
[C++] 14503 - 로봇청소기 (골드5)
·
Coding Test/Solution
1. 문제 설명 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 2. 아이디어 멘토 활동을 하다가 삼성 기출은 어떤 식으로 나오나 싶어서 몇 문제 풀어보던 중 발견한 문제. 문제에 모든 로직을 제공해줘서, 사실상 코드로 구현만 하면 되는 간단한 문제다. 이 문제가 쉽게 풀리지 않는다면 구현력 자체가 떨어지거나, 심한 경우엔 독해력이 떨어지는 것. 조롱의 의미가 아니라 후자의 경우면 문제를 꼼꼼하게 읽고, 논리적으로 분석하려는 노력을 남들보다 몇 배로 연습한다면 충분히 극복 가능하다. 각각의 로직을 어떻게 처리..
[C++] 1014 - 컨닝 (플래티넘4)
·
Coding Test/Solution
1. 문제 설명 1014번: 컨닝 최백준은 서강대학교에서 “컨닝의 기술”이라는 과목을 가르치고 있다. 이 과목은 상당히 까다롭기로 정평이 나있기 때문에, 몇몇 학생들은 시험을 보는 도중에 다른 사람의 답지를 베끼려 한 www.acmicpc.net 2. 아이디어 처음 보자마자 dynamic programing을 사용하면 풀 수 있을 것이라 생각하고 접근 중이었는데, 풀다가 심심해서 알고리즘 분류표를 봤더니 최대 유량이 태그에 있었다. 이 문제를 최대 유량으로 해결할 수 있다고..??? 뒤져보니 컨닝 2는 dp와 비트마스킹으로 풀어야 시간복잡도 내에 해결 가능하지만, 컨닝 1은 최대 유량으로 해결 가능하다는 글을 보자마자 일단 dp 풀이는 미루고 최대유량으로 접근하는 방법을 찾아보았다. 하지만 도저히 해결 ..