본문 바로가기

C++18

[백준] 14503 - 로봇 청소기 (Python) (C++) 문제 출처: https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제 풀이 : 전형적인 구현문제로 그냥 문제를 이해하고 구현하기만 하면된다. 이런 문제를 풀때 팁은 각각의 동작을 함수로 구현해서 각 동작들이 잘 작동하는지 확인하고 최종적으로 함수의 위치만 잘 사용하면 되는데 나는 귀찮아서 통으로 코딩하긴 하였다.. n,m = map(int,input().split()) robot = list(map(int,input().split())) maps.. 2021. 7. 19.
[백준] 11053 - 가장 긴 증가하는 부분 수열 (C++) 문제 출처: www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제 풀이: 필자가 생각하기에 이 문제의 핵심은 증가수열의 첫 부분 정하기 뒷부분에서 만들어지는 증가 수열이 기존에 만들어진 증가수열의 일부분(중복되는 부분) 인지 체크 때문에 cache 자료구조를 만들어서 방문한 자리를 체크해주었다. 이렇게 해주어도 괜찮은 이유는 예제를 보면서 알아보자 arr 10 20 10 30 20.. 2021. 3. 26.
[백준] 7569 - 토마토 (C++) 문제 출처 : www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 문제 풀이 : 지난번에 푼 토마토 문제(문제번호를 보면 다른 문제다 !)와 매우 흡사한 문제다. 다른점은 그냥 3차원으로 확장했다는 것인데 사실 3차원으로 확장한다해도 결국은 컴퓨터에겐 3차원의 개념이 없다는 점에서 index만 잘 고려해 준다면 크게 어려울 것이 없다. 지난번 토마토 문제에서와 바뀐점은 그냥 h(높이 부분)에 해당되는 움직임만 추가해주고 전체 로직은 똑같다.. 2021. 3. 9.
[백준] 2579 - 계단오르기 (C++) 문제 출처: www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 풀이: 이 문제는 3가지 조건을 지켜야한다. 한번에 2개 혹은 1개 씩 오른다. 연속으로 3개의 계단을 밞으면 안됨(다만 시작점은 계단에 포함되지않는다) 마지막 계단은 반드시 밟아야한다. 여기서 3번 조건을 이용하는게 핵심적이라고 생각한다. 필자는 처음부터 밟는다고 생각한 뒤 풀었는데 그런경우 마지막 계단을 밟을 수 있는지 체크하는 부분이 굉장히 복잡하게 느껴졌다. 때문에 마지막 계단을 밟았다고 생각하고 .. 2021. 3. 2.
반응형