본문 바로가기

반응형

시뮬레이션

(15)
[삼성 기출 문제] 백준 14500 테트로미노 문제 링크 클릭시 이동합니다. 어떻게 풀까? 블럭들을 보시면 최대 4x4 영역 안에 들어온다는 것을 알 수 있습니다.간단하게, 4x4 영역 안에 블럭에 들어오는 영역이면 1, 아니면 0으로 표시하면,모든 (i,j) 영역에 대해서 위에서 저장한 값을 곱해서 더하면 블럭에 대한 더하기 값을 알 수 있습니다. 이 중 최댓값을 반환하면 되겠죠! 다만 위처럼 배열 인덱스 초과가 나지 않도록 하기위해, 오른쪽과 아래에 0의 값을 가지도록 영역을 더 넓혀서 계산합시다! 테트로미노 사전을 만드는 것이 문제 푸는것 보다 오래 걸리는 문제입니다. 코드 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525..
[삼성 기출 문제] 백준 14499 주사위 굴리기 문제 링크 어떻게 풀까? 시뮬레이션 문제입니다! 문제의 순서를 정확히 파악해서 문제가 요구하는 데로 구현하면 종료됩니다! 특히, 주사위가 돌아갈 때마다 주사위의 면이 어떻게 변하는지, 맵은 어떻게 변하는지를 잘 조절하시면 됩니다! 정육면체가 위, 아래, 왼쪽, 오른쪽으로 이동할때마다 면이 어떻게 변하는지를 switch 문으로 구분해 줍니다. 위나 아래로 굴러갈때에는 아래 그림 처럼 4개의 면을 순서대로 이동하면 되고, 오른쪽이나 왼쪽으로 굴러갈때에는 아래 그림처럼 4개의 면을 순서대로 이동하면 됩니다! 이렇게 회전한 뒤에 맵의 면이 0일 경우와 아닐 경우를 구분해서 주사위 면의 바닥과 맵의 값을 변경해 주시면 됩니다!그리고 주사위의 윗면에 적힌 수를 출력하면 되죠! 다만, 맵의 경계 밖이라면 함수에서 리..
[삼성 기출 문제] 백준 3190 뱀 문제 링크 클릭시 이동합니다! 어떻게 풀까? 대표적인 시뮬레이션 문제입니다.시뮬레이션에서 가장 중요한 것은 순서를 아주 잘 파악해야 한다는 것입니다. 이 문제의 경우에는 순서가 다음과 같습니다. 1. 몸길이를 늘린다.2. 사과가 있으면 사과가 없어지고, 꼬리는 움직이지 않는다.3. 사과가 없다면 몸길이를 줄여서 꼬리가 위치한 칸을 한 칸 비운다. 입니다. 위에 안나와 있어서 햇갈리는 부분은 바로 머리의 회전 입니다. 입력에서 보면, 머리 회전에 관해서 X와 C가 나오는 것을 볼 수 있습니다.그리고, X가 끝난 후에 회전하는 것을 알 수 있습니다! 죽는것은, 벽에 닿거나 뱀의 몸에 닿는 경우이죠. 즉, 모든 조건을 추가하면, 1. 몸길이를 늘린다.2. 사과가 있으면 사과가 없어지고, 꼬리는 움직이지 않는다..
[SW Expert Academy] 8월의 마지막 코드배틀 어느덧 8월도 끝나부렀네요.진짜 생각해보면 시간이 빠릅니다. 여름 핵더웠는데, 이제는 조금 괜찮아진것도 같고,산 다닐때 모기도 정말 드럽게 많았는데, 요즘은 또 잠잠하더라구요. 어쨌든, 화요일마다 시행하는 코드배틀! 오늘도 시작하겠습니다. SW Expert Academy의 문제들은 무단 복제가 금지되어있기 때문에 링크로 대체하겠습니다! 클릭시 이동합니다. 5431. 민석이의 과제 체크하기 어떻게 풀까? 카운팅 소팅을 응용합시다! 우선, 과재의 개수 N만큼 check 배열을 만듭니다.그리고 입력이 들어올때마다 해당 check배열을 true로 만들어줍니다. 그리고 입력이 끝나면, 이제 1부터 N까지 순회하면서 check배열이 false라면 해당 수를 출력하면 쉽게 구할 수 있을 것 입니다! 코드 123456..
[BOJ] 11559. Puyo Puyo Puyo Puyo클릭시 이동합니다. 어떻게 풀까? 시뮬레이션문제입니다!시뮬레이션 문제는 문제에서 요구하는 것들에 대해서 구조체와 함수를 잘 만들어야합니다! 해당 문제에서 요구하는 것은 크게 두 가지 입니다. 1. 상 하 좌 우로 4개의 블럭들이 모여있으면 터뜨려라!2. 빈 공간이 생기면 아래로 내려라! 두 가지 모두 이전에 했던 밍이의 블록게임과 유사한 작업입니다.만약, 글만으로 잘 이해가 안된다면, 해당 포스팅을 한번 보시는 것을 추천드립니다! 그럼 우선, 1번 작업에 대해 프로그래밍을 해봅시다. 우선, 맵을 다 보면서 블록이 있는지 확인합니다. 그리고, 만약 블록이 있다면,아래 단계를 순서대로 실행합니다. 1. 블록의 상하좌우에 같은 블록이 있으면 큐에 담고, visit check를 해준다.2. 블록..
[SW Expert Academy] 2382. 미생물 격리 2382. [모의 SW 역량테스트] 미생물 격리 삼성 SW Expert Academy의 문제들은 저작권이 걸려있기 때문에 링크로 대체하겠습니다!클릭시 이동합니다! 어떻게 풀까? 시뮬레이션 문제입니다.문제가 요구하는 사항을 구현하는 것이 가장 주가됩니다! 풀기 위해 생각해봐야 할 것이 몇 군 데 있습니다. 1. 시간에 따른 미생물의 이동 (가장 기본)- 각 미생물 군집에 따라 미생물들의 수와 이동 방향이 주어집니다.- 미생물들은 매 시간마다 자신의 이동 방향으로 한 칸 이동합니다. 2. 끝에 닿았을 경우의 처리- 이동하는 방향을 반대로 해야한다.- 미생물의 수가 절반으로 줄어야한다.단, 미생물의 수가 홀 수 였다면, 소수점 이하를 버린다.미생물 수가 0이 되면 군집이 사라진다. 3. 여러 미생물이 만났을 ..
[BOJ] 2161번 문제 카드1, 2164번 문제 카드2 카드1 문제 링크카드2 문제 링크어떻게 풀까? 두 문제는 N만 다르지 거의 같은 문제입니다! 두 문제를 풀기 위해 리스트를 사용했습니다. 카드 1의 경우에는 리스트에서 맨 앞에 하나는 출력하고 리스트에서 삭제합니다.그리고 또다시 맨 앞의 수를 삭제하고 맨 뒤에 넣습니다.이 행동을 n-1번 반복하면 마지막 카드가 남고, 이 카드를 출력해주면 됩니다! 예제를 한번 풀어보겠습니다! 처음에 리스트에는 1,2,3,4,5,6,7이 들어있습니다. 맨 앞에있는 수는 출력하고, 2는 삭제한 뒤에 맨 뒤에 다시 넣어줍니다. 이제 맨 앞의 수가 3이 되고, 해당 수를 출력하고 삭제합니다.4는 삭제하고 맨 뒤로 보냅니다. 이제 맨 앞의 수는 7이 됩니다. 7을 출력하고 리스트에서 삭제합니다.2도 리스트에서 삭제 후에 맨 뒤에..

반응형