목록문제 풀이/Simulation (22)
코린이 탈출기
벽돌 깨기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com crash(): 구슬이 벽돌이 깨뜨릴 때 호출되는 함수. 벽돌이 또 다른 벽돌을 깰 때도 호출됨 removeEmpty(): 벽돌이 다 깨진 후 사이사이의 빈공간을 없애주는 함수 -> 백트래킹으로 구현했음 1. possible 리스트에는 각 열에서 처음으로 깨질 행의 번호가 저장되어 있다. 2. 구슬을 쏠 수 있는 범위(0~W-1)만큼 crash -> removeEmpty를 한다. 다시 재귀로 호출 3. arr와 possibe 다시 원상태로 돌리기 4. 구슬을 쏠 수 있는 횟수만큼 다 쏘거나 그 전에 모든 벽돌이 깨진다면 solution() 종료 -전체 ..
문제 바로가기 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 풀이 시간: 2시간 처음에 잘못 생각해서 치즈 기준으로 bfs를 했다. 다시 푸느라 오래 걸렸다 ㅜㅜ 1. 치즈 안에 있는 구멍은 외부 공기와 접하지 않기 때문에 치즈와 바깥공기가 접하고 있는 부분을 찾아내야 한다. 이를 찾아내기 위해 가장자리부분과 인접한 모든 빈 공간을 bfs로 찾는다. 이때 치즈 안에 있는 공간은 당연히 찾아질 수 없다. 이렇게 찾아낸 부분은 visited에 저장한다. 2. visited에는 치즈인 부분(구멍포함)과 바깥부분 이렇게 나뉘게 된다...
문제 바로가기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 코드 유목민... 여러가지 써보는 중이다.. 얼마전 카카오 코테에서 파이썬으로 했으면 고생고생을 안해도 될 문제가 있었어서 파이썬에 꽂혔당 ㅎ 아직은 익숙하지 않아서 문법 같은 건 그때그때 찾아보면서 하고있다 1. 보물상자의 면이 4개이므로 전체 숫자를 4로 나눠서 rotate_num을 구한다. 2. 4개의 영역으로 숫자들을 잘라서 splitTreasure에 저장한다. -> rotate. 한 칸씩 시계방향으로 이동 3. 2번을 (rotate_num-1)만큼 반복 4. 중복 제거를 해야하므로 splitTreasure에 set을 취한 후 문제에서 원하는..
문제 바로가기 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 봄, 여름, 가을, 겨울이 지나면서 수행해야하는 일이 다 다르다. 네가지 일을 모두 끝내면 한 해가 지난 것인데, 입력으로 주어진 해만큼 수행한 뒤 땅에 남아있는 나무의 수를 구하면 된다. 땅 한 칸에는 다른 문제들과는 좀 다르게 여러 나무들이 심겨져있을 수 있기 때문에 map이라는 배열의 원소로 땅의 양분(food)과 나무의 나이 vector(tree_age)를 두었다. 나무가 하나 심겨질 때마다, vector에 push_back한..
문제 바로가기 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 흑흑 너무 힘든 문제여따 ㅜ ㅅ ㅜ 애초에 코딩 전에 어떻게 풀 지 생각하는 부분에서 내가 잘못 생각한 게 여러 부분 있었다. 먼저, 나는 빨간 공이 움직일 수 있을 때만 판을 기울인다고 생각했다. 하지만 빨간공이 움직일 공간이 없더라도 파란공이 움직일 수 있으면 그 경우의 수를 고려해주었어야 했다. 두번째, 백트래킹 방식으로 구현할 때 파란공이 구멍에 빠지면 바로 return을 했는데, 이 부분에서..
문제 바로가기 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름�� www.acmicpc.net 문제 미쳤냐.. x y 반대로 돼있다 ㅜㅜㅜ 하.. 너무 헷갈려 !!!! 심지어 첫 예시가 d1 = 1, d2 = 1이여서 그냥 해보면 x, y가 바껴있다는 걸 모른다.. 분명 다 맞게 했는데 왜 안되는지 엄청 헤맸는데 ㅠㅅㅠ 풀기전에 예시로 나와있는 거 다 보고 해야겠다.. 어렵지는 않은데 느므 더럽다 이런문제 싫다 진짜... #include #include #include #include using namespace std; int N; int p..
문제 바로가기 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. www.acmicpc.net 푸는데 1시간 20분 걸렸다. 더 줄일 수 있었는데 이상한데서 시간 낭비했다 ㅠㅠ 뱀의 방향 전환정보에서 X와 C의 의미를 잘 생각해야한다. X초가 지난 후에 C의 방향을 전환하기 때문에 시작은 0초부터이고 마지막에는 현재 시간부터 (현재시간 + 최대 N길이)동안 move_snake를 한 번 더 해주어야한다. #include #include #include using namespace std; int N, K, L; int map[101][101]; in..
문제 바로가기 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 시뮬레이션 문제이다 sort함수에서 compare 함수로 custom하게 사용할 수 있다는 것을 알게됐다 R_calculate이랑 C_calculate이랑 로직은 똑같은데 수행하는 게 열 기준/행 기준만 다른데,, 두개를 합치면 더 간단한 코드가 될 수 있을 것 같은데 모르겠당 ㅎ #include #include #include #include using namespace std; int arr[201][201]; int ncount[2..