반응형

알고리즘/삼성 SW역량테스트 22

[SW expert] 3066 팀 정하기

어쩌다 그냥 시간을 보내던중 이런 글을 봤다.. 알고리즘은 이제 접은지 오래 됐는데.. 그냥 호기심이 들었다. 그러다 과연 D7중에 할만한게 있을까 찾아보고 했는데 심심풀이가 하나 있었던것 같다. 이게 D7인지 의문이지만.. 연습장도 필요없다 바로 풀어보자.. https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV_WwlpqAAoDFAX7 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 그냥 구현?은 아니고 생각만 간단하게 해서 풀면 된다. K값에 따라 남/여 숫자만 줄여나가면 되니.. 그리고 줄인 수마다 각 경우에서 그룹의..

[백준] 19237 어른 상어

올해 삼성 역량테스트 문제로 알고 있다. 이 문제는 시키는 대로 구현하는 문제이다. 문제의 출처는 아래와 같다. https://www.acmicpc.net/problem/19237 이 문제는 복잡한 구현으로 설계를 잘해야한다. 먼저 각 상어들을 구조체로 관리하여 위치와 방향, 그리고 살이있는지를 관리한다. 문제에서 방향에 따라 복잡하게 구현되어져 있는데 그것을 shark_dir[상어번호][방향][우선순위] 로 지정해 주었다. 사용방식은 sol() 함수의 내부를 보면 이해할 수 있다. 마지막으로 상어의 냄새와 해당 위치에서의 상어 번호를 관리해준다. (smoke[x][y][냄새],smoke[x][y][상어번호] ) 이제 시뮬레이션은 아래와 같다. 0) 입력과 함께 해당 위치에서의 냄새 및 상어번호를 저장하..

[백준] 15661 링크와 스타트

문제의 출처는 아래와 같다. https://www.acmicpc.net/problem/15661 이 문제는 삼성 역량테스트 기출문제인 '스타트와 링크' 의 상위호환 버전으로 문제가 조금 변형된 문제이다. 원래 문제에서는 팀을 두 그룹으로 나눌 때, 팀의 인원이 같은 즉, N/2 명으로 동일한 상태를 요구했다. 이 문제는 팀을 두 그룹으로 나눌 때, 팀의 인원이 다를 수 있다. 즉 N이 4일때 (1) , (2,3,4) 와 같이 팀의 인원이 다른 상태를 생각해야 하는 문제이다. 그래서 필자는 그룹을 나누기 위해 부분집합을 사용하였다. 부분집합을 구하면서 바로 연산을 해도 되지만 필자는 N의 부분집합을 모두 구한 상태에서 조건에 맞지 않는 부분과 이미 동일한 부분집합의 내용일때 그 경우를 바로 리턴하였다. 규..

[백준] 17281 야구?

문제의 출처는 아래와 같다. https://www.acmicpc.net/problem/17281 삼성 A형 기출문제 문제집에 야구공 모양의 문제이다. 이 문제는 처음에 아무리봐도 이해가 잘 되지 않았다. 그래서 처음에 해설을 참고할 수 밖에 없었다. 이 문제는 1) 순열을 통해 전체 경우를 찾는데, 4번타자는 항상 처음에 배치되는 조건을 만든다. 2) 야구의 규칙대로 구현을 한다. 인데 각 줄에 있는것이 무슨 의미인지 이해를 못했다. 각 줄은 1~n 이닝이니 순서와 상관이 없다. 우리는 순열을 사용해서 3아웃이 되면 다음 이닝에 따른 값을 사용하면 되는 문제이다.... 구현부분은 잘 작성이 안되어서 해설코드를 그대로 참고하여 내 코드에 맞게 조금만 수정하였다. 문제는 처음에 순열을 next_permuta..

백준[14891] 톱니바퀴

삼성 역량테스트 기출문제중 하나이다. 문제의 출처는 아래와 같다. https://www.acmicpc.net/problem/14891 이 문제는 구현으로 문제에서 하라는대로 하면 되는 문제이다. 회전을 구현한 다음 문제를 잘 읽어서 이해하여 톱니바퀴를 문제의 조건에 맞게끔 움직이면 된다. 먼저 회전부터 보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 void rotate(int a) { // 반시계 char tmp = arr[a][0]; for (int i = 0; i 0; i--) arr[a][i] = arr[a][i-1]; arr[a][0] = tmp; //printf("%s\n", arr[a]); } http://colorscripter.com/info#e" target="_blank"..

백준[17144] 미세먼지 안녕!

출처는 아래와 같다. 2019년 삼성 상반기 기출문제로 알고있다. acmicpc.net/problem/17144 이 문제 역시 시키는대로 구현하면 되는 문제이다. 문제는 구현이 누군가에게는 쉬울수도 어려울수도 있다는 것이 문제이다. 문제를 보면 2가지로 나누어 순서대로 구현하여 문제를 해결하면 된다. 순서대로 확인해보자. 1) 확산 미세먼지가 확산된다는데 그냥 읽어서는 정확하게 구현하기 쉽지 않다. 필자는 예제에 있는 그림 중 3번째 그림을 보면서 이해하는데 시간이 좀 걸렸다. 이것을 코딩하는데 생각하는것도 만만치 않을텐데 필자는 나눠줘서 확산되는 값들을 저장하는 f[][] 배열을 통해 구현하였다. f[][] 배열은 확산에 따른 모든 값들을 더해지게 되고 원본 배열은 arr[][]에는 정 중앙의 확산에 ..

백준 [17779] 게리맨더링2

문제 출처 : https://www.acmicpc.net/problem/17779 삼성 역량테스트 2019년 하반기 기출문제이다. 푸는 방법은 여러가지가 있으며 대부분 그냥 for문을 사용하여 문제에 맞게 구현하였다. 범위에서 실수하지 말고 4중 for문으로 모든 경우에 문제에서 주어진 '구간 5' 부분을 채우고 나머지 부분을 채우는 구현문제이다. 필자는 '구간 5'부분을 채운다음 나머지 부분을 BFS탐색으로 채워 넣었는데 여기서 기본적인 for문의 구현방식보다 실행시간이 오래 걸렸다. 그리고 이 문제에서는 '구간 5'를 시작하는데 해당 모양이 이루어질 수 없는 상태라면 배제해도 된다. 그러니까 시작할 위치 (r,c)에 대해 d1,d2 값을 빼거나 더했을때, 범위를 벗어나는 경우는 무시하면 된다. 구현을..

백준 [17822] 원판 돌리기

문제 출처 : https://www.acmicpc.net/problem/17822 2019 하반기 문제라고 해서 한번 풀어보았다. 이 문제는 시키는 대로 잘 구현해서 풀었다. 다른사람은 이런 시뮬레이션에 BFS를 함께 사용하여 푸는 경우도 봤지만, 필자는 그저 시키는대로 하나하나 확인하며 해결하였다. 문제는 이 문제에서 회전 후, 바뀌는게 없으면 전체 수의 평균값을 가지고 +1 혹은 -1 을 하는 경우에서 평균과 같은 값이면 그대로 두어야 하는것을 잘못하여 하루종일 걸렸다... 이걸 찾는대도 오래걸렸다... 문제에서 크다와 작다로 표기되어 있는데.. 암튼 같은 경우에는 그대로 두면 된다. 그리고 가로, 즉 한 원에 들어있는 수가 m개라는걸... 다 풀고 보았다. 4개로만 되어있길래 4개를 기준으로 풀었었..

백준[17142] 연구소 3 (add. 연구소 2)

이 문제의 출처는 아래와 같다. 참고로 '연구소2'와 매우 비슷하다. https://www.acmicpc.net/problem/17142 https://www.acmicpc.net/problem/17141 먼저 이문제를 푸는데 필요한 것은 '조합' 을 먼저 작성하고 'BFS 탐색' 을 실시하여 탐색시 문제의 조건에 맞게 구현하면 해결할 수 있다. 먼저 입력을 받고 '조합'을 생각하자. 이 문제에서는 바이러스의 전체갯수 중에서 몇개를 선택하기 때문에, 바이러스의 위치를 저장한 vector를 DFS를 통해 조합을 구현하였다. DFS 함수에서 골라야 하는 갯수를 모두 선택하였으면 그 떄, BFS를 시작하면된다. 처음 시작할때, 시작하는 바이러스를 모두 큐에 넣어주고 -1로 초기화된 방문여부 확인값을 0으로 만..

백준[17140] 이차원 배열과 연산

문제 출처 : https://www.acmicpc.net/problem/17140 위 문제는 '삼성 역량 테스트' 기출문제로 분류되어 있다. 먼저 다른 사람의 코드는 보지 못했다. 필자는 문제를 읽으면서 그냥 하라는 대로 구현하는 문제로 생각하고 시키는대로 풀었다. 언제나 그렇듯 설계를 잘하고 코드를 짜면서 제대로 돌아가고 있는지 확인하는 과정이 필요하다. 이번에도 확인하면서 잘 돌아가는것을 보았으나 한두개의 일부분만을 확인했지 10번 20번 돌아가는 경우의 검증을 제대로 하지 않아서 오류를 찾는데 시간이 좀 걸렸다. 이제 문제를 풀어보자. 3x3 matrix를 기준으로 R연산 혹은 C연산을 하는 문제이다. 연산을 구현하기 위해서는 각 Row, Collum 마다의 값과 횟수를 기준으로 정렬하는 방법이 필..

반응형