백준 2331 반복수열

2020. 9. 8. 21:27·알고리즘/BOJ

www.acmicpc.net/problem/2331

 

2331번: 반복수열

첫째 줄에 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 출력한다.

www.acmicpc.net

배열하나 잡고 dfs돌리면서 방문처리 해주면 되는 쉬운 문제인줄 알았으나 5연속 연타임 에러를 맞고 

다시 꼼꼼히 살펴봤다.

일단 배열의 크기는 아무리 커도 9^5 * 5 이니 30만을 넘지 않는다.

 

#include <iostream>
#include <cmath>
using namespace std;

int vis[300000];
int a, p, ans;

int cal(int n) {
	int ret = 0;
	while (n > 0) {
		ret += (int)pow(n % 10, p);
		n /= 10;
	}
	return ret;
}

void dfs(int cur, int cnt) {
	if (vis[cur] > 0) {
		ans = vis[cur] - 1; return;
	}
	vis[cur] = cnt;
	//printf("cal(%d) = %d, cnt= %d\n", cur, cal(cur), cnt);
	dfs(cal(cur), cnt + 1);
}

int main() {
	cin >> a >> p;
	dfs(a, 1);

	cout << ans << endl;

	return 0;
}

 

각 숫자를 인덱스로 해서 체크해주고 계속 재귀를 돌다가 이미 방문했던 적이 있으면 종료해준다.

처음에는 dfs를 int 형으로 해줬는데

	if (vis[cur] > 0) {
		ans = vis[cur] - 1; return;
	}

이 조건문 밑의 코드들이 되는 리턴값이 없어서 런타임 에러가 발생한것 같다. 그래서 ans에 넣어주고 return; 해줬다.

 

내가 문제를 풀면서 런타임 에러를 여럿 경험해봤는데 정말 대부분은 인자의 반환값이 잘못된다거나, 배열의 크기를 잘못 설정해줬다거나 루프를 빠져나오지 못하거나 int형 범위를 초과하거나 등 몇가지 경우의 수밖에 되지 않으니 주변 부분을 잘 살펴봐야 한다.

 

www.acmicpc.net/board/view/22980

 

글 읽기 - 주로 런타임 에러가 발생하는 이유는 무엇인가요?

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

이 글이 참고가 많이 되었다.

 

 

'알고리즘 > BOJ' 카테고리의 다른 글

백준 9466 텀 프로젝트  (0) 2020.09.09
백준 4963 섬의 개수  (0) 2020.09.09
백준 10451 순열 사이클  (0) 2020.09.07
백준 13305 주유소  (0) 2020.09.07
백준 2981 검문  (0) 2020.09.07
'알고리즘/BOJ' 카테고리의 다른 글
  • 백준 9466 텀 프로젝트
  • 백준 4963 섬의 개수
  • 백준 10451 순열 사이클
  • 백준 13305 주유소
khyu2
khyu2
  • khyu2
    dev log
    khyu2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘
        • BOJ
        • Programmers
        • Algorithm
        • SWEA
      • 개발
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트 연습
    조합
    이분 탐색
    우선순위 큐
    MST
    dp
    행렬 제곱
    팰린드롬
    시뮬레이션
    BOJ
    GREEDY
    완전 탐색
    트리
    큐
    크루스칼
    알고리즘
    프로그래머스
    dfs
    분할 정복
    피사노 주기
    다익스트라
    피보나치 수
    SWEA
    이분탐색
    유니온 파인드
    구현
    냅색
    완전탐색
    BFS
    소수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
khyu2
백준 2331 반복수열
상단으로

티스토리툴바