[코딩 테스트] 소프티어(Softeer) 연습 문제 - 바이러스

2023. 2. 9. 20:32·개발/자료구조, 알고리즘
반응형

코딩 테스트를 위한 소프티어(Softeer) 연습 문제 중 바이러스 문제를 풀어보았다.

 

연습 문제 - 바이러스

  • 난이도 : level 2
  • 정답률 : 30%

https://softeer.ai/practice/info.do?idx=1&eid=362 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

문제 해설

최초 K개의 바이러스가 초당 일정 배수 P로 증가하는데 N초 후에는 바이러스가 몇 개가 되는지에 대한 문제이다. 죽는 바이러스는 없으니 별로 어렵지 않은 문제이다. K, P가 10^8이고 N이 10^6이다. 여기서 주의할 점은 바이러스 개수를 1000000007으로 나눈 나머지로 표시하는 것이다. 단순히 mod 연산을 하면 되는데 괜히 어렵게 생각하다 보면 오히려 복잡해질 수 있다. 하나는 단순이 for loop로 구현해 보았고 하나는 재귀함수를 통해 구현해 보았다.

 

코드 1

#include<iostream>

using namespace std;
#define mod 1000000007
typedef unsigned long long ull;

int main(int argc, char** argv)
{
	ull K, P, N;
	cin >> K >> P >> N;

	int k = K;
	for (int i = 0; i < N; i++) {
		k = k * P % mod;
	}
	cout << k << endl;
	return 0;
}

 

코드 2

#include<iostream>
using namespace std;
#define mod 1000000007
typedef unsigned long long ull;
ull increase(ull k, ull p, int n) {
	if (n <= 0) return k;
	increase(k * p % mod, p, n - 1);
}
int main(int argc, char** argv)
{
	ull K, P, N;
	cin >> K >> P >> N;
	ull res = increase(K, P, N);
	cout << res << endl;
	return 0;
}

 

결론

처음에 재귀함수 방식으로 구현하였는데 답이 틀리거나 시간이 오래 걸리는 문제들이 발생했다. 아무래도 stack을 많이 사용하거나 mod 연산을 불필요하게 사용하다 보니 문제가 발생하였다. 또한 재귀함수는 혹시나 해서 unsinged long long을 사용했는데 굳이 필요 없긴 하지만 문제의 숫자가 커지거나 실수를 예방하기 위해 사용하는 것도 나쁘지 않은 것 같다.

저작자표시 비영리 변경금지 (새창열림)

'개발 > 자료구조, 알고리즘' 카테고리의 다른 글

[코딩 테스트] 소프티어(Softeer) 연습 문제 - 주행거리 비교하기  (0) 2023.02.10
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 성적평가  (0) 2023.02.09
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 8단 변속기  (0) 2023.02.09
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 금고털이  (0) 2023.02.09
[코딩 테스트] 소프티어(Softeer) 연습 문제 - A+B  (1) 2023.02.08
'개발/자료구조, 알고리즘' 카테고리의 다른 글
  • [코딩 테스트] 소프티어(Softeer) 연습 문제 - 성적평가
  • [코딩 테스트] 소프티어(Softeer) 연습 문제 - 8단 변속기
  • [코딩 테스트] 소프티어(Softeer) 연습 문제 - 금고털이
  • [코딩 테스트] 소프티어(Softeer) 연습 문제 - A+B
growing-dev
growing-dev
S/W 개발 관련 내용들과 취미나 육아, 맛집 등 관심 있는 내용을 공유하는 블로그입니다.
    반응형
  • growing-dev
    성장하는 개발자 블로그
    growing-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 개발
        • 개발 공통
        • 개발 환경
        • Git
        • 자료구조, 알고리즘
        • C, C++
        • Python
        • DevOps
        • CMake
      • 공부
        • 영어
        • 경제
      • 취미, 육아 N
        • 육아
      • 생활정보
  • 블로그 메뉴

    • 홈
  • 링크

    • growing-dev GitHub
  • 공지사항

    • [블로그 시작] 성장하는 개발자 스토리입니다.
  • 인기 글

  • 태그

    오블완
    생산성
    VS Code
    C++
    Clang
    티스토리챌린지
    오픽
    OPIC
    Python
    앨리웨이
    하이볼
    TDD
    프로그래머스
    필스너
    소프티어
    키즈카페
    git
    CMake
    WSL
    dfs
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
growing-dev
[코딩 테스트] 소프티어(Softeer) 연습 문제 - 바이러스
상단으로

티스토리툴바