반응형 알고리즘27 [프로그래머스 위클리챌린지 9주차] 전력망을 둘로 나누기(C++) 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 처음에는 좀 막막했는데 금방 풀이를 떠올릴 수 있었다. 간선의 개수가 최대 100개밖에 되지 않아서 모든 경우를 다 탐색해보고 가장 차이가 적게 나는 경우를 찾아주었다. 처음에 인접 그래프를 떠올리고 초기화하는데 크기를 wires.size()로 입력해버려서 자꾸 Segmentation fault가 발생했다. 송전탑은 1번부터 시작하므로 wires.size() 크기로 벡터를 선언하는경우 n번째 송전탑의 그래프를 저장할 때 에러가 발생한다. 인접그래프를 만들고 난 뒤에는 bfs로 간단하게 순회가 가능하다. 차이가 음수일 수 있으니 abs()를 이용해 절댓값을 얻어주었다. 만약 송전탑 개수의 차이가 0또는 1이면 .. 2021. 10. 7. BOJ 12100) 2048(Easy) (C++) 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net Easy라고 되어있는데 헤맸다. 구현 자체는 어렵지 않았는데 DFS처럼 구현을 해버리고 board는 원상복구를 안시켜줘서 자꾸 오답이 떴다. 매 회 보드의 형태를 기억할 순 없으니까 5번 돌리고 나면 다시 아예 처음으로 돌아가서 시행해줘야 한다. 큐를 이용해서 각 라인을 표현했다. 앞에 아무것도 없는 경우(temp = 0)에는 해당 값을 기억하고 큐에서 빼낸다. 앞에 블럭이 있는 경우 자신과 같으면 합쳐지면서 board에 덮어씌워지고 .. 2021. 10. 5. BOJ 18808) 스티커 붙이기 (C++) 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 구현 문제이다. 처음엔 돌리는걸 직접 구현하지 않고 노트북에 스티커를 붙여보는 단계에서 i, j를 조절해서 해결하려 하였으나 생각보다 신경쓸 부분이 많아서 스티커를 돌리는걸로 변경했다. 스티커를 돌리는 부분에서 i, j가 헷갈려서 또 한참 헤맸다. 각 스티커에 대해 붙일 수 있는지 검토한다(stick). 붙일 수 있는 공간이 있으면 붙이고 다음 스티커의 검토로 넘어가고 그렇지 않으면 스티커를 회전시켜 다시 시도한다. 스티커를 회전시킬 때 i, j가 어떤식으로 바뀌어.. 2021. 10. 4. BOJ 15683) 감시 (C++) 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 각 CCTV의 좌표를 arr배열에 저장하고 가능한 모든 경우를 탐색한다. 5번 카메라는 한 방향, 2번 카메라는 2 방향, 나머지 카메라는 4 방향으로 설치가 가능하다. 풀면서 한가지 실수 때문에 시간을 많이 허비했다. 처음에 각 CCTV가 감시하는 공간을 -1로 체크하고 되돌아오면서 0으로 다시 복구시켜 준 것이다. 이렇게 할 경우 다른 CCTV와 같은 공간을 감시하다가 한 CCTV만 다른 방향으로 트는 경우에 해당 공간에 대한 감시가 풀린 것으로 체.. 2021. 9. 26. BOJ 16987) 계란으로 계란치기 (C++) 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net 백트래킹을 이용해 풀었다. 1. 가장 왼쪽의 계란을 든다. 2. 손에 들고 있는 계란으로 깨지지 않은 다른 계란 중에서 하나를 친다. 단, 손에 든 계란이 깨졌거나 깨지지 않은 다른 계란이 없으면 치지 않고 넘어간다. 이후 손에 든 계란을 원래 자리에 내려놓고 3번 과정을 진행한다. 3. 가장 최근에 든 계란의 한 칸 오른쪽 계란을 손에 들고 2번 과정을 다시 진행한다. 단, 가장 최근에 든 계란이 가장 오른쪽에 위치한 계란일 경우 계란을 치는 과정.. 2021. 9. 24. BOJ 1941) 소문난 칠공주 (C++) 1941번: 소문난 칠공주 총 25명의 여학생들로 이루어진 여학생반은 5*5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작 www.acmicpc.net 처음에는 각 점에 대해 DFS나 BFS로 탐색을 시도하려고 했는데 그럴 경우 다음과 같은 경우가 탐색이 되지 않았다. O O O O O O O O O O O O O O 어떻게 해야 하나 머리를 싸매다가 https://transferhwang.tistory.com/294 님의 블로그에서 도움을 얻었다. 1. 7명의 학생을 뽑는다. 2. 해당 학생들 중 이다솜파가 4명 이상인지, 모든 학생이 인접해 있는지를 검사한다. #include using namespace std.. 2021. 9. 23. 이전 1 2 3 4 5 다음 반응형