올해부터 코테 준비를 본격적으로 시작했다.
그동안 어느정도 공부했다고 생각했는데 얼마전의 삼성 알고리즘 특강 사전문제를 풀면서 벽을 느꼈다.
D4~D6레벨 문제였다는데 내가 많이 부족한 것을 느꼈다. 이러다가 삼성 A형 코테도 통과못하는 게 아닐까 불안감이 커지던 중,
우연히 코드트리 조별과제를 실시한다는 것을 알게 되었다.
코딩트리에서 실력 진단을 받았더니 기본 4문제도 못풀어서 아래와 같이 결과가 나왔다...
4번은 2진수 비트마스킹 문제인 줄 알았는데 백트래킹이었구나..
한편, 삼성식 문제를 잘 못 푸는 것, 풀어도 시간이 오래걸리는 것이 바로 내가 시뮬레이션 유형 문제에 약하다는 결과로
다시 확인사살되었다 ㅋㅋ
그래서 먼저 코드트리의 시뮬레이션 관련 학습자료부터 공부를 시작했다.
1. 시뮬레이션 - dx dy 테크닉
#include <iostream>
using namespace std;
int n, m, a[101][101], dir,x,y;
int dy[]={0,1,0,-1}, dx[]={1,0,-1,0}; // R,D,L,U
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> n >> m;
a[0][0]=1; // 초기값
// n*m 번 진행
for(int i=2; i<=n*m; i++){
int ny = y + dy[dir];
int nx = x + dx[dir];
if(ny<0 || nx<0 || ny>=n || nx>=m || a[ny][nx]!=0){
dir = (dir+1)%4; // 시계방향 90도 회전
}
y += dy[dir];
x += dx[dir];
a[y][x]=i;
}
// 출력
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cout << a[i][j] <<" ";
}
cout <<"\n";
}
return 0;
}
아쉬운 점
이 사이트 공부자료에서는 북쪽 방향 이동이 당연히 y++ 인 형태로 단정하는데, 문제에서 명확히 설명이 되지 않고 예시입력을 확인해야한다는 점이 불편했다. 그래서 실력 테스트 처음 볼 때 정답이 바로 안나와서 당황했던듯
'etc' 카테고리의 다른 글
[코드트리 조별과제] 3주차 (0) | 2024.08.02 |
---|---|
[코드트리 조별과제] 2주차 (1) | 2024.07.26 |
댓글