본문 바로가기

Computer Science&Engineering/코딩테스트

(59)
2021 상반기 삼성 SW 역량테스트 후기 (SCSA과정, 비전공자) # 시험 보게 된 이유 저는 2020 하반기에 삼성전자 CEIM부문 SCSA로 선발되었습니다. 비전공자로 선발되어 6개월 교육 후 S직군으로 입사하는 과정입니다. 과정중에 시험을 자주 보지만, 그 중 하나가 삼성 SW역량테스트입니다. SW역량테스트에서 등급을 취득해야 S직군으로 일 할 수 있나봅니다. 시험 합격을 위해서 약 한 달 동안 알고리즘 문풀을 빡세게 했습니다.. 2021년 04월 25일, 오후에 삼성 상생협력아카데미로 시험을 보러 갔습니다!! # 시뮬레이션 두 문제 SW역량테스트에 대비하기 위해서 DFS, BFS 같은 완전탐색, 이진탐색, 플로이드 와샬, DP 뭐 이런거 엄청 공부했는데, 시뮬레이션 두 문제가 나왔습니다. 문제를 읽고 문제에 나온대로 잘 구현해내면 되는 문제들!! 문제를 읽고 필..
[ 백준 2573 ] 빙산 (C++) BFS 풀이 # 문제링크 www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net BFS 돌리면서 0 만나면 map에 -1 씩 해주고, 0이 아니면 queue 에 넣어서 계속 돌려주면 된다. 그렇게 한 덩이가 2개 이상이면 return 해주면 된다! # 제출 코드 #include #include #include using namespace std; int N, M; int map[300][300]; void input() { scanf("%d %d", &N, &M); for..
코딩테스트 전날.. 실수 정리 내일 코딩테스트인데, 새로운 문제 풀기보다는 지금까지 실수를 정리하는 게 좋을 거 같다. # 내가 자주하는 실수 모음 1. 배열 범위 체크 잘 못 하기 ( ex, 0 부터? 1부터? N-1 까지인지 N 까지인지.. 아 쓰면서도 헷갈림 ) 2. 배열 초기화 안하기 ( 테스트 케이스 여러 개 돌릴 때 memset 잘하기, 걍 무족권 해..! ) 3. freopen 쓰고 그대로 내기 4. 변수 같은 이름으로 여러개 선언하기 ( int i, num 조심... ) 5. 조건문 여러 개 쓸 때 순서 잘 생각하기 ( 어떤 조건문이 먼저 와야 하는가.. 종료 조건?? 가지치기 ?? 대부분은 범위 체크가 제일 먼저 와야 함.. ) 6. BFS 돌릴 때 visit 체크는 push 할 때 하기 이 정도인거 같다. 이 외에 ..
[ 백준 17136 ] 색종이 붙이기 (C++) # 문제링크 www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 로직은 잘 짠거같은데 "틀렸습니다"가 떴다. 다시 생각해보니, map 배열을 딱 map[10][10] 사이즈만큼 주고서는 r, c 범위를 제대로 지정해주지 않았다. r, c 따로 적는게 귀찮을 것 같아서 place 를 1~99 까지 하고, r = place / 10, c = place %10 으로 주었다. 그런데, 이렇게 두고 범위 검사를 해주지 않았다. 예를 들어, 종이 가장자리에서 2 ..
[ 백준 12886 ] 돌 그룹 (C++) # 문제링크 www.acmicpc.net/problem/12886 12886번: 돌 그룹 오늘 강호는 돌을 이용해 재미있는 게임을 하려고 한다. 먼저, 돌 세개는 그룹으로 나누어져 있으며 각각의 그룹에는 돌이 A, B, C개가 있다. 강호는 모든 그룹에 있는 돌의 개수를 같게 만들려고 www.acmicpc.net 10 15 35 나, 15 10 35 나, 35 10 15나,,,, 같은 숫자 구성이다. 어차피 같은 숫자 구성인데 각각 진행시켜 줄 필요가 없다. 세 수를 오름차순으로 정렬해서 체크를 재주면 visited[500][500][500] 에 체크를 다 해줄 수 있다. 세 수의 비교 코드,, C언어 배울 때 if else 문 chapter 에서 국룰이었는데.. 그 때 생각하며 if else 를 열씸히..
[ 백준 19238 ] 스타트 택시 # 문제링크 www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 그 아기상어 문제를 풀고 난 뒤부터, 대부분 BFS 문제가 아기상어 문제처럼 보인다. 이것도 BFS로 손님 찾고 visit 초기화, BFS로 목적지 데려다주고 visit 초기화. 이런 식으로 진행된다. 손님을 찾는 BFS에서 손님 번호를 return 해야 하는데, 동시에 손님까지 간 거리도 return 해주고 싶었다. 왜냐면 solve 함수에서 taxi 관련 ..
[ 백준 9207 ] 페그 솔리테어 (C++) # 문제링크 www.acmicpc.net/problem/9207 9207번: 페그 솔리테어 각 테스트 케이스에 대해서, 핀을 움직여서 남길 수 있는 핀의 최소 개수와 그 개수를 만들기 위해 필요한 최소 이동 횟수를 출력한다. www.acmicpc.net 이 문제를 처음 봤을 때는 왜이렇게 어렵게 생각했는지 모르겠다. ㅎㅎㅎ 처음 봤을 때는 저 말들을 어떻게 움직여줘야하지? 그냥 무작위로 다 움직이면 되나? 저 말들의 위치값을 받아두어야 하나? 한 번 움직이면 그 다음은 어떡하지? ... 뭔가 정리가 안되었다. 그냥 for 문 돌면서 말의 위치를 찾아서, 말이 이동 가능한 모든 경우의 수로 돌려보면 되는 문제였다. 근데 맵이 또 계속 달라지는데 어떻게 하지? 원본을 복사해뒀다가 한번 시뮬레이션을 하고 다시..
[ 백준 17281 ] ⚾ 야구 구현 문제 # 문제링크 www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net DFS로 타자들의 순서를 정하고, 시뮬레이션을 돌려주었습니다. 그냥 뭐 생각할 것도 없고, if 문 여러 개 해서 조건만 맞추어서 돌려주었습니다. 시뮬레이션 문제는 진짜 문제 꼼꼼하게 읽고 그대로! 코드로 구현하는 게 중요한 거 같아요.. # 제출 코드 #include using namespace std; int N; int order[10]; int map[51][10]; bool chk[10]; in..