본문 바로가기
etc

[코드트리 조별과제] 1주차

by fafaya 2024. 7. 20.

올해부터 코테 준비를 본격적으로 시작했다. 

그동안 어느정도 공부했다고 생각했는데 얼마전의 삼성 알고리즘 특강 사전문제를 풀면서 벽을 느꼈다.

D4~D6레벨 문제였다는데 내가 많이 부족한 것을 느꼈다. 이러다가 삼성 A형 코테도 통과못하는 게 아닐까 불안감이 커지던 중,

우연히 코드트리 조별과제를 실시한다는 것을 알게 되었다.

 

코딩트리에서 실력 진단을 받았더니 기본 4문제도 못풀어서 아래와 같이 결과가 나왔다...

4번은 2진수 비트마스킹 문제인 줄 알았는데 백트래킹이었구나..

 

한편, 삼성식 문제를 잘 못 푸는 것, 풀어도 시간이 오래걸리는 것이 바로 내가 시뮬레이션 유형 문제에 약하다는 결과로 

다시 확인사살되었다 ㅋㅋ

 

그래서 먼저 코드트리의 시뮬레이션 관련 학습자료부터 공부를 시작했다.

 

 


 

 

 

1. 시뮬레이션 - dx dy 테크닉

 

 

 

 

 

https://www.codetree.ai/missions/13/problems/snail-number-square?&utm_source=clipboard&utm_medium=text

 

 

 

#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

댓글