#문제 https://www.acmicpc.net/problem/1107 #풀이문제 해결 방법에 대해 감이 잘 오지 않았던 문제였습니다.별에 별 생각을 다했으나.. 쉽게 풀 수 있는 방법이 있어서 충격을...받았습니다.. 가장 쉽게 접근 할 수 있는 방법은 모든 경우의 수를 해보는 경우입니다.즉, 0부터 할 수 있는 모든 채널을 확인하면서 원하는 채널에 가장 적은 버튼 누름으로 가는 방법을 찾아가면 됩니다.말로만 보면 굉장히 어려울 수 있으나 직접 코드를 보면 이해가기 편하실 겁니다. 채널을 이동할 때 매우 여러가지 경우의 수가 있겠지만, 문제에서 원하는 것은 최소의 버튼 누름이란것을 캐치하셔야합니다!즉, + - + - + + + + 처럼 중간에 다른 버튼이 끼여있다면 의미가 없어지며, + - + 350..
#문제 https://www.acmicpc.net/problem/3568 #풀이해당 문제는 단순히 나와있는대로 그대로~ 하는것이 중요합니다.저는 너무 생각을 많이해서 저어어 멀리까지 갔다 다시 돌아왔습니다. 변수형에서 나오는 배열,참조,포인터 순서대로 알고 있어야되며, 변수명 뒤에 나오는 추가 변수형또한 앞에 변수형의 순서에 맞게 차곡차곡 알아서 쌓이게 만드는줄 알았습니다.예를 들면 int&[]*[]& aADD*[]&; 식의 문장이 있을때는int&&&[][][]** aADD; 로 바뀌는 줄 알았던 것이죠....:(정말로 이해력에 감탄했습니다..ㅎㅎ.. 다시 문제에대해 말하자면, 먼저 빈칸을 기준으로 나누어야 합니다. 제가 주로 쓰는 방식은 sstream을 이용하여 문자들을 나눕니다. 또한 한 줄에 대하여..
#문제 https://www.acmicpc.net/problem/15662 #풀이이 문제는 시뮬레이션으로 하여 풀었습니다. 기존 톱니바퀴 문제에서 조금 더 진화된 문제로 4개가 아닌 T개의 톱니를 다 보아야 합니다.해당 조건으로 인해 기준이 되는 톱니바퀴를 돌릴 경우 양쪽으로 전부 혹은 몇개만 돌아갈 수 있습니다. 돌아갈 수 있는 톱니바퀴를 찾을때 BFS 혹은 DFS로 확인하면서 찾을 수 있다고 생각했지만...기준 톱니의 왼쪽 오른쪽을 나누어 따로 확인하는 방식으로 하였습니다. BFS나 DFS로도 풀어 봐야겠습니다 :) 혹시 BFS 혹은 DFS로 푸신 분들은 코드 공유좀 부탁드리겠습니다! 돌아간 톱니를 찾은 뒤에는 톱니 바퀴를 방향에 맞게 돌려주는 것을 총 K번 반복 하면 끝입니다.톱니바퀴 문제에 비해 ..
# 문제https://www.acmicpc.net/problem/14499 # 풀이 이 문제는 시뮬레이션(문제에서 지시하는대로 코딩) 문제입니다. 위 문제의 핵심은 주사위 굴리기 와 굴릴때의 조건 맞추기 입니다. - 주사위 굴리기 - 주사위는 배열을 만들어 주사위 칸을 만들었고, 문제에서 처음 주어진 주사위의 모양을 이용하였습니다. 2 4 1 3 5 6위와 같이 배열의 1 번째가 무조건 위, 아래는 6 번째로 잡고 시작합니다.동으로 갈때는, [1 -> 3] [3 -> 6] [6 -> 4] [4 -> 1] 로 바뀌게 되어 네개의 칸(1,3,4,6)만 한칸씩 밀리게 됩니다.서는 그 반대며, 남과 북도 비슷하게 4칸(1,2,5,6)만 바꾸면 됩니다. - 굴릴때의 조건 맞추기 - 해당 조건은 굉장히 맞추기 쉽습..
# 문제 https://www.acmicpc.net/problem/16234 # 풀이 dfs를 사용하여 문제를 풀었습니다.(bfs로 하셔도 괜찮습니다.) 총 3개의 2차원 배열을 사용했습니다. 일단, 첫 번째는 초기 국가들의 인구수를 2차원 배열입니다.이 배열을 기반으로 국가간 연합이 가능한지 여부를 매번 따질 수 있게끔 하는 배열입니다. 두 번째는 dfs를 통하여 연합된 국가들을 표시하는 역할을 하는 배열입니다.나중에 인구수를 재배치 할때, 해당 배열을 보며 인구 수를 분배합니다. 세 번째는 dfs를 할때 가장 중요한 visit 배열입니다. 탐색을 배우신 분들이라면 이것이 얼마나 중요한지 아실겁니다. :) 이 문제는 단지번호붙이기 라는 문제에서 약간 심화된 문제라고 생각되어 링크를 걸어 놓았습니다.혹시..
# 문제 https://www.acmicpc.net/problem/16235 # 풀이 일단, 굉장히 구현스러운 문제... 그냥 문제 따라서 가면서 코드를 짜면 된다. 여기서 조심할점은..... 나무의 위치를 주어질때! x,y 가아닌 y,x 순으로 주어진다는 것이다.....이점을 명시하자.... 1년차에는 기본적으로 양분이 모두 5로 되어있기 때문에 1년차와 아닐때를 나누어 알고리즘을 짯다.1년차에는 기본적으로 주어진 양분을 사용, 2~K년차까지는 여태 남아있는 양분을 사용!이런식으로 기본적 양분을 넣어줄 2차원 배열, 매년마다 추가로 들어가는 양분을 저장해줄 2차원 배열, 최종으로 남게 되는 양분 2차원 배열 3개를 만들어 사용하였다. 우선 순위 큐를 사용해도 되지만, 벡터를 사용하였다.큐 사용할때 넣고..
# 문제 https://www.acmicpc.net/problem/16236 # 풀이 문제에 조건들이 은근히 많습니다. 현재 자신의 크기도 판단해야되고, 자기보다 크기가 작은 친구들의 위치를 구할때, 자신과 크기가 같은 친구들은 통과 되지만, 자신 보다 큰 친구들을 못지나가고....또, 자신보다 작은 친구들을 탐색할때, 같은 거리에 있는 친구들이 있다면 맨 위, 왼쪽이 우선순위여야하고....이렇게나 지켜야할 조건들이 은근 있어 까다로운 문제입니다. 저는 아기 상어의 위치와 정보를 구조체로 만들어 전역변수로 선언하여 계속해서 사용했습니다.또, 물고기들의 위치와 사이즈도 구조체로 만들어 위부터 그것도 왼쪽에서 맵 입력을 받을 때마다 넣어 주었습니다.(위로 인하여 위에 조건중 거리가 같은 물고기가 있을때 맨 ..
#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5-BEE6AK0DFAVl #풀이 완전 탐색을 통해 푸는 문제이다.N의 크기가 최대 10에 사람의 수가 최대 10명, 계단의 입구는 반드시 2개이기 때문에 가능하다. 일단, 2개 방식이 떠올랐다.모든 사람들을 사방으로 움직이며, 계단을 찾았을때 내려가는 방식을 생각해 보았는데... 이건 너무 터무니 없는 짓인것같아서 다른 방법을 생각하였다. 일단 M명의 사람이 어디 계단으로 갈지만 정한 다음 각자의 계단에서 따로 걸리는 시간을 구해주면 되는 방식을 떠올리게 되었다. 이렇게 한다면 계단이 무조건! 2개이므로 사람의 선택지는 2가지 즉 2^M시간이 걸린다..
#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRFInKex8DFAUo #풀이 굉장히 까다로웠던 문제이면서 시간이 엄청 오래 걸렸다. 시간 초과만 몇 번이 나왔는지 모르겠다..... 일단 원자들이 움직이는 것은 단순하다.진짜 일직선만 쭈우욱...나아가기 때문에 너무 얕잡아 보았다. 여기서 중요한 점이 있다. 만약 원자 하나는 [3,0]에서 왼쪽을 향해 가고있고 다른 원자는 [2,0]에서 오른쪽을 향해 가고있다면, [2.5,0]인 곳에서 원자가 부딪히게 되어 정해진 1초가 아닌 0.5초에 원자들이 만나게 된다. 이 문제로 인해 여러 가지 방식으로 접근하게 되었다. 처음에는 단순히 맵(2000X20..
#문제 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRF8s6ezEDFAUo #풀이 문제를 본 순간, 아....딱 재귀호출을 이용하여 풀면 딱 답이 나오겠다...라고 생각을 하고 풀게 되었습니다. 일단, 맵의 경우 부딪쳤을 때를 대비하여 양옆과 위, 아래에 1씩 추가를 해주었습니다. 해당 위치에 들어가면, 벽에 부딪친걸로 판단하며 다시 되돌아오도록 하였습니다. 빠져나가는 조건으로 블랙홀과 시작지점이 있기 때문에 따로 저장을 하게 되었습니다.특히 블랙홀의 경우, 나중에 쉽게 찾기 위해 set으로 저장하였고,시작지점은 여러개의 시작 지점을 저장, 이를 탈출구로 인식하기 위해 하나씩 빼어 썻습니다. 다음 ..