반응형
https://www.acmicpc.net/problem/1913
#구름IDE에서 디버깅 하는 방법
IDE 환경에서 처음 디버깅을 배운건 VS 사용했을때 중단점 설정 후 코드를 한줄 한줄 실행 시키는 것.
함수를 들어갈지 말지도 선택하면서 코드 한줄한줄 읽었던것 같다. 그리고 변수의 메모리 주소를 알아내어 실시간 RAM의 상태를 보면서 들어가 있는 변수들을 보았다.
이후 구름IDE 로 옮기면서 디버깅 기능을 사용 안하고 그냥 확신이 부족한 부분에서 출력을 찍어 봤는데,
출력 찍는데만 해도 길어지는 코드가 있어서 디버깅 방법을 익히게 되었다.
간단한 디버깅 방법
#1. cout 출력을 이용해서 중간 중간 변수를 확인한다.
C++에서는 cout, C에서는 printf 등등 확인하고 싶은 변수를 중간중간 넣어주면 가능.
#2. 반복문에서 일시정지하기. 그리고 변수 확인하기
만약 반복문에서 출력을 확인하고 싶은데, 반복문이 워낙 빠르게 진행되다보면 출력되는 데이터가 우르르 나오게 되어 디버깅을 할 수가 없다.
그럴때는
아무런 입력을 cin을 받아 반복문을 일시정지 해본다.
eg) int k; cin>k; // 변수 k는 그냥 버리는 거임.
#3. 디버깅 툴을 이용해서 변수 추적하기
디버깅 계속 : 다음 중단점 이동
스탭인 : 한줄 한줄 , 호출되는 함수가 있으면 들어감
스탭아웃 : 아 이제 이 함수는 그만... 선택된 스택이 리턴될때까지 실행
스탭 오버 : 한줄 한줄 , 함수는 건뛰
//1913
#include<iostream>
using namespace std;
int map[1000][1000];
int dx[4] = {-1,0,1,0};
int dy[4] = {0,1,0,-1};
int n;
bool isInRange(int x,int y){
if(x<= 0 || y <= 0 || x > n || y > n){
return false;
}
if(map[x][y] != 0){
return false;
}
return true;
}
int main(){
int goal; cin>>n>>goal;
int x,y; int dir; int cur = 1;
int interval = 2;
int ansx,ansy;
x = (n+1) / 2; y = (n+1) /2 ; // start x,y
map[x][y] = cur++; dir = 0;
while(true)
{
//해당 방향 만큼 이동 (만약 끝점이라면 종료)
int end = interval / 2 ;
for(int i = 1; i <= end ; i++ ){
int nx = x + dx[dir];
int ny = y + dy[dir];
if(!isInRange(nx,ny)){break;}
map[nx][ny] = cur++;
x =nx; y = ny;
if(map[x][y] == goal){ansx = x; ansy= y;}
}
//방향전환
dir = (dir + 1) % 4;
//간격 조정
interval++;
if(x == 1 && y == 1){ break;}
//7 int k; cin>>k; //FB1. 반복문 일시정지하기.
}
for(int i = 1; i <= n ;i++){
for(int j = 1 ; j <=n ; j++){
cout<<map[i][j]<<" ";
}
cout<<"\n";
}
cout<<ansx<<" "<<ansy<<"\n";
return 0;
}
/*
FB1. 디버깅 하는 방법
1. cout 출력을 이용해서 중간 중간 변수를 확인한다.
2. 반복문 일시정지하기.
만약 반복문에서 출력을 확인하고 싶은데, 출력양이 많다면
아무런 입력을 cin을 받아 반복문을 일시정지 해본다.
3. 디버깅 툴을 이용해서 변수 추적하기
디버깅 계속 : 다음 중단점 이동
스탭인 : 한줄 한줄 , 호출되는 함수가 있으면 들어감
스탭아웃 : 아 이제 이 함수는 그만... 선택된 스택이 리턴될때까지 실행
스탭 오버 : 한줄 한줄 , 함수는 건뛰
*/
플라즈마 IT 블로그 - 코딩 공부 정리, IT 정보 공유
https://plasmacodeing.tistory.com/
조금이라도 도움이 되었다면 공감 및 댓글 주세요~~
반응형
'알고리즘 > 백준[BOJ] 오답노트' 카테고리의 다른 글
C++ 배열 인덱스 1부터 사용 하기 - 백준 알고리즘 오답노트 2011 (0) | 2019.05.07 |
---|---|
C++ 소수점 반올림 안됨. fixed가 고장났을때 - 백준 알고리즘 오답노트 2755 (0) | 2019.05.07 |
알고리즘 고수의 코드를 보다. - 백준 알고리즘 오답노트 5073 (0) | 2019.05.07 |
다이나믹 프로그래밍 오버플로어 - 백준 알고리즘 오답노트 1012 (0) | 2019.05.07 |
배열 초기화 방법 fill vs memset - 백준 알고리즘 오답노트 1260 (0) | 2019.05.06 |