본문 바로가기

반응형

삼성 기출

(7)
[삼성 기출 문제] 백준 14891 톱니바퀴 문제 링크 어떻게 풀까? 전형적인 시뮬레이션 문제입니다. 문제의 내용을 그대로 구현해야합니다! 먼저 생각해보아야 할 것은 톱니바퀴의 극을 어떻게 설정할 것인가? 입니다. 톱니바퀴는 N극과 S극의 2 가지 상태로 나타낼 수 있습니다.그리고 톱니가 8개이기 때문에, 비트로 나타내면 편하게 관리할 수 있을 것 같습니다! 시계 방향과 반시계 방향도 비트 연산자 하나만으로 해결 될 수 있죠! 123456789101112131415161718192021222324252627282930313233struct TOP { int topni; bool getUP() { return topni & 1; } bool getRIGHT() { return topni & (1
[삼성 기출 문제] 백준 14889 스타트와 링크 문제 링크 클릭시 이동합니다. 어떻게 풀까? 를 구하는 문제입니다. n 개의 데이터를 스타트 팀, 링크 팀에 넣은 뒤에 두 팀의 능력치를 계산해서 두 능력치의 차이 중 최소의 값을 출력합시다! 참고로, 능력치는 입력에 주어지는 것 처럼 2차원 배열에 저장하실 겁니다!팀의 능력치를 구할 때, i, j가 같은 팀이면 능력치를 (i,j)와 (j,i)의 합으로 구할 수 있습니다!즉, 1번 사람과 2번 사람이 팀이라면, (1,2)와 (2,1)를 더해서 구하면 됩니다! 2차원 for문을 이용하면 1번 사람과 2번 사람의 경우와 2번 사람과 1번 사람의 경우 두 개를 중복으로 확인할 것입니다.이를 피하기 위해서 j는 i+1번 번호 부터 확인하도록 합시다! 저는 비트조합을 이용해서 조합을 구했는데, 이를 확인하시려면 ..
[삼성 기출 문제] 백준 14503 로봇 청소기 문제 링크 클릭시 문제로 이동합니다! 어떻게 풀까? 전형적인 시뮬레이션 문제입니다!문제에서 요구하는 것들을 잘 분석해서 순서에 유의해서 잘 구현하면 됩니다!! 이 문제에서 조금 생각해봐야할 부분은 로봇 청소기가 청소를 종료해야하는 상태와 후진해야하는 상태를 구분해야한다는 것입니다. 그래서 저는 상태를 다음과같은 3가지 상태로 표현했습니다.-1: 청소를 종료해야함- 4 방향 모두 청소가 되어있는데, 뒤가 이동 불가능한 지역 1 : 청소기가 이동함.- 4 방향 중 청소가 안된 방향으로 이동- 4 방향 모두 청소가 되어있어서 현재 바라보는 방향에서 뒤 칸으로 이동 2 : 청소가 이미 되어있어서 청소가 안된 곳 발견 필요 상태가 -1이 나오면, 함수에서 return값으로 현재까지 청소한 구역의 개수를 반환합니다..
[삼성 기출 문제] 백준 14500 테트로미노 문제 링크 클릭시 이동합니다. 어떻게 풀까? 블럭들을 보시면 최대 4x4 영역 안에 들어온다는 것을 알 수 있습니다.간단하게, 4x4 영역 안에 블럭에 들어오는 영역이면 1, 아니면 0으로 표시하면,모든 (i,j) 영역에 대해서 위에서 저장한 값을 곱해서 더하면 블럭에 대한 더하기 값을 알 수 있습니다. 이 중 최댓값을 반환하면 되겠죠! 다만 위처럼 배열 인덱스 초과가 나지 않도록 하기위해, 오른쪽과 아래에 0의 값을 가지도록 영역을 더 넓혀서 계산합시다! 테트로미노 사전을 만드는 것이 문제 푸는것 보다 오래 걸리는 문제입니다. 코드 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525..
[삼성 기출 문제] 백준 14499 주사위 굴리기 문제 링크 어떻게 풀까? 시뮬레이션 문제입니다! 문제의 순서를 정확히 파악해서 문제가 요구하는 데로 구현하면 종료됩니다! 특히, 주사위가 돌아갈 때마다 주사위의 면이 어떻게 변하는지, 맵은 어떻게 변하는지를 잘 조절하시면 됩니다! 정육면체가 위, 아래, 왼쪽, 오른쪽으로 이동할때마다 면이 어떻게 변하는지를 switch 문으로 구분해 줍니다. 위나 아래로 굴러갈때에는 아래 그림 처럼 4개의 면을 순서대로 이동하면 되고, 오른쪽이나 왼쪽으로 굴러갈때에는 아래 그림처럼 4개의 면을 순서대로 이동하면 됩니다! 이렇게 회전한 뒤에 맵의 면이 0일 경우와 아닐 경우를 구분해서 주사위 면의 바닥과 맵의 값을 변경해 주시면 됩니다!그리고 주사위의 윗면에 적힌 수를 출력하면 되죠! 다만, 맵의 경계 밖이라면 함수에서 리..
[삼성 기출 문제] 백준 3190 뱀 문제 링크 클릭시 이동합니다! 어떻게 풀까? 대표적인 시뮬레이션 문제입니다.시뮬레이션에서 가장 중요한 것은 순서를 아주 잘 파악해야 한다는 것입니다. 이 문제의 경우에는 순서가 다음과 같습니다. 1. 몸길이를 늘린다.2. 사과가 있으면 사과가 없어지고, 꼬리는 움직이지 않는다.3. 사과가 없다면 몸길이를 줄여서 꼬리가 위치한 칸을 한 칸 비운다. 입니다. 위에 안나와 있어서 햇갈리는 부분은 바로 머리의 회전 입니다. 입력에서 보면, 머리 회전에 관해서 X와 C가 나오는 것을 볼 수 있습니다.그리고, X가 끝난 후에 회전하는 것을 알 수 있습니다! 죽는것은, 벽에 닿거나 뱀의 몸에 닿는 경우이죠. 즉, 모든 조건을 추가하면, 1. 몸길이를 늘린다.2. 사과가 있으면 사과가 없어지고, 꼬리는 움직이지 않는다..
[삼성 기출 문제] 백준 13460 구슬 탈출 2 문제 링크 클릭시 문제로 이동합니다. 어떻게 풀까? 우선, 맵의 크기를 확인해 봅시다! 10 * 10의 맵의 크기를 가집니다. 그리고, 빨간 공과 파란공 2 가지 경우가 있죠. 그 말인 즉슨! 4 차원 배열을 통해서 [빨간공의 행][빨간공의 열][파란공의 행][파란공의 열] 형태로 visit 처리를 만들 수 있고,이를 통해 bfs를 이용하면 구슬을 빼낼 수 있는 최단 시간을 출력할 수 있습니다! 큐 에는 빨간공의 위치와 파란공의 위치를 넣으면 되겠죠! 10번이 넘어가면 -1을 return 하면 되겠군요! 그럼, 판을 상, 하, 좌, 우로 움직일 땐 어떻게 하면 될까요?그저 공의 위치를 저장해 놓고, 오른쪽으로 이동하면서 벽이 만나는 경우 그 전의 위치에다가 공을 위치시키기만 하면 됩니다!아래의 경우를 보..

반응형