백준 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
      • 개발
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바