dev_beomgeun
꾸준하게 차근차근
dev_beomgeun
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • 전공 (0)
      • 운영체제 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 데이터베이스 (0)
      • 네트워크 (0)
    • 개발 공부 (32)
      • 웹 (6)
      • 리눅스 (4)
      • 머신러닝 (1)
      • 스프링 (17)
      • Git (2)
      • AWS (2)
    • 개발 도서, 강의 (3)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식(김영한.. (2)
      • 스프링 부트와 AWS로 혼자 구현하는 웹서비스 (1)
    • 문제 풀이 (118)
      • 백준 알고리즘 (72)
      • 프로그래머스 알고리즘, SQL (38)
      • Hackerrank SQL (8)
    • 프로젝트 기록 (4)
      • 캡스톤 종합설계 (4)
      • 반려하루 프로젝트 (0)
    • 활동 기록 (12)
      • 네이버 부스트캠프 (7)
      • 취준 & 코테 (4)
      • 소프트웨어 마에스트로 13기 (1)
    • 이것저것 (1)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인
  • 방명록

공지사항

인기 글

태그

  • 회고
  • Hackerrank
  • 서블릿
  • Baekjoon
  • 백준
  • dp
  • 스프링
  • 반성
  • 기록
  • 프로그래머스
  • AI Tech
  • 네이버 부스트캠프
  • BFS
  • HackerRank mysql
  • 프로그래머스 SQL
  • 일기
  • 그래프탐색
  • c++
  • 백준 DP
  • 부스트캠프

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dev_beomgeun

꾸준하게 차근차근

문제 풀이/백준 알고리즘

[baekjoon 20548] 칠리소스 (수학, 브루트포스) (C++)

2021. 2. 21. 12:34
728x90

www.acmicpc.net/problem/20548

 

20548번: 칠리소스

용광이는 72칠리 소스를 좋아한다. 용광이는 어떤 칠리 소스를 살지 고민중이다. 이 칠리 소스는 1단계부터 727,272단계까지의 매운맛이 있다. 72칠리 소스는 인하대학교 72호관에 있는 공장에서 제

www.acmicpc.net

칠리소스는 7의 제곱수로 이루어져 있으며, 각 제곱수를 2개까지 이용이 가능하다.

예를 들어 7의 0 제곱수만큼의 캡사이신이 함유된 베이스 캡사이신 한 번과 7의 1 제곱수만큼의 캡사이신이 함유된 베이스 캡사이신 두 번의 조합으로 15만큼의 캡사이신이 함유된 72 칠리소스를 만들 수 있다. 그리고 이 소스의 매운맛 단계는 7이다. 1단계 매운맛의 경우 1만큼의 캡사이신이 함유된다.

 

정리하면

매운맛 단계 캡사이신 구성 함유량
1 7^0 * 1 1
2 7^0 * 2 2
3 7^0 * 0 + 7^1 * 1 7
4 7^0 * 1 + 7^1 * 1 8
5 7^0 * 2 + 7^1 * 1 9
6 7^0 * 0 + 7^1 * 2 14

이런 식으로 구성이 된다. 7단계는 예시에 써져있는 것처럼 15가 될 것이다.

즉, 7의 제곱수들을 각각 0~2번씩 사용해서 만들 수 있는 수들을 오름차순으로 정렬한 순서가 매운맛 단계이다.

 

또한, 수를 분석해보면 각 자릿수는 7의 제곱수로 구성되어 있고 0~2번씩 사용이 되었다.

매 자릿 수당 0~2를 사용하는 것이 3진수가 연상이 된다

 

따라서, 입력받은 함유량을 통해 단계를 출력하면 되므로

함유량을 7로 나눈 나머지를 3진수를 10진수로 바꾸듯이 계산하면 된다.

ex) 14는 7^1*2 + 7^0*0이고 20(3)이다. 10진수로 바꾸면 2 * 3^1 + 0 * 3^0 = 6이다.

 

+총 727272단계이므로 int형을 넘어간다.

 

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

long long n, result, temp;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> n;
	// 수의 구성 : 7의 제곱수로 0~2(3진수형식)만큼
	// ex : 10의 제곱수로 10진수형식은 10으로 나누면 각 자릿수가 나오고 10진수형식이므로 10을 곱해주면 복원이 가능
	// 즉 이 수는 7의 제곱수로 3진수 형식이므로 7으로 나눈 나머지를 3으로 곱해주면 복원이 가능하다.

	int digit = 1;
	while (n) {
		result += (n % 7) * digit;
		n /= 7;
		digit *= 3; // 3진수형식이므로 한 칸당 3씩 늘어난다(0,1,2)
	}

	cout << result;
}

 

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

'문제 풀이 > 백준 알고리즘' 카테고리의 다른 글

[baekjoon 2749] 피보나치 수 3 (DP, 피사노 주기) (C++)  (0) 2021.02.25
[baekjoon 1541] 잃어버린 괄호 (그리디, 문자열, 수학) (C++)  (0) 2021.02.22
[baekjoon 2294] 동전 2- DP(동적 프로그래밍) (C++)  (0) 2021.02.18
[baekjoon 1149] RGB거리 (DP) (C++)  (0) 2021.02.16
[baekjoon 1806] 부분합 (투 포인터) (C++)  (0) 2021.02.15
    '문제 풀이/백준 알고리즘' 카테고리의 다른 글
    • [baekjoon 2749] 피보나치 수 3 (DP, 피사노 주기) (C++)
    • [baekjoon 1541] 잃어버린 괄호 (그리디, 문자열, 수학) (C++)
    • [baekjoon 2294] 동전 2- DP(동적 프로그래밍) (C++)
    • [baekjoon 1149] RGB거리 (DP) (C++)
    dev_beomgeun
    dev_beomgeun
    백엔드 개발을 하며 얻은 지식과 경험을 공유합니다. 현재 카카오페이에서 백엔드 엔지니어로 일하고 있습니다.

    티스토리툴바