새소식

코딩테스트/코드트리

[코드트리 챌린지] 빙빙 돌며 사각형 채우기

  • -

[문제]

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

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

[문제 풀이]

달팽이 문제처럼 빙글빙글 돌면서 숫자가 아니라 A 부터 Z까지 반복해서 채우는 문제이다.

 

빙빙 돌며 사각형 채우기2 문제와 거의 흡사하지만 알파벳을 순서대로 돌려야 하기에 해당 부분을 위해

char alphabet을 만들어주고 A부터 Z까지 가면서 Z를 넘어선순간 A로 돌아오게 만들었다.

[회고]

.

[코드]

#include <iostream> using namespace std; int n,m; int dx[4] = {-1,0,1,0}; int dy[4] = {0,1,0,-1}; int visited[101][101]; char arr[101][101]; bool inRange(int x, int y){ if(x >= 0 && x < n && y >= 0 && y < m){ return true; } return false; } int main() { cin>>n>>m; arr[0][0] = 'A'; visited[0][0] = 1; int idx = 1; int x = 0, y = 0; int dict = 1; char alphabet = 'B'; for(;idx <n * m;){ int nextX = x + dx[dict]; int nextY = y + dy[dict]; if(inRange(nextX,nextY) == false || visited[nextX][nextY] != 0){ dict = (dict + 1) % 4; continue; } idx++; x = nextX; y = nextY; arr[x][y] = alphabet; visited[x][y] = 1; alphabet++; if(alphabet > 'Z'){ alphabet = 'A'; } } for(int i = 0;i<n;i++){ for(int j = 0; j<m;j++){ cout<<arr[i][j]<<" "; } cout<<endl; } return 0; }

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.