```
백준 1568번 새 C++ 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 1568번 풀이
https://www.acmicpc.net/problem/1568
1568번: 새
N마리의 새가 나무에 앉아있고, 자연수를 배우기 원한다. 새들은 1부터 모든 자연수를 오름차순으로 노래한다. 어떤 숫자 K를 노래할 때, K마리의 새가 나무에서 하늘을 향해 날아간다. 만약, 현
www.acmicpc.net
백준 1568번은
난이도 브론즈 등급의 문제로서
설명
N 마리의 새가 나무에 있는데
1초가 지나면 1마리가 날아가고
그다음 초가 지나면 2마리가 날아가고
그다음 초에는 3마리가 날아갑니다.
만약 날아가는 수가 지금 남은 새보다 크다면
1부터 다시 시작합니다.
지금 나무에 있는 새가 N마리일 때
모든 새가 날아가는데 몇 초가 걸리는지 구하는 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
입력을 받고
find_flying_time 함수 내부에서
새의 수를 인자로 받아서
while문이 돌 때마다
새의 수가 0보다 클 때
새의 수가 지금 날아가야 하는 새의 수보다 작을 때는 1부터 샐 수 있도록 if문을 넣고
날아가는 새의 수를 빼주며
시간을 더해주고
날아가는 새의 수를 더해줍니다.
전체 코드는 다음과 같습니다
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <array>
#include <stack>
#include <queue>
#include <map>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <regex>
namespace kimc::lib {
int32_t find_flying_time(int32_t numberOfBirds) {
int32_t timePassed = 0;
int32_t birdsFlyingAtOnce = 1;
while (numberOfBirds > 0)
{
//새의 수가 지금 불러야 하는 수 보다 작을 때는, 1부터 게임을 다시 시작한다
if (numberOfBirds < birdsFlyingAtOnce)
{
birdsFlyingAtOnce = 1;
}
//어떤 숫자 K를 노래할 때, K마리의 새가 나무에서 하늘을 향해 날아간다
numberOfBirds = numberOfBirds - birdsFlyingAtOnce;
birdsFlyingAtOnce++;
timePassed++;
}
return timePassed;
}
}
int main()
{
// 입력 최적화
std::cin.tie(NULL);
std::ios::sync_with_stdio(false);
std::string inputStr;
std::getline(std::cin, inputStr);
std::stringstream ss(inputStr);
int32_t numberOfBirds;
ss >> numberOfBirds;
std::cout<< kimc::lib::find_flying_time(numberOfBirds);
}
부가적으로 이야기하자면
재귀를 요즘 안 쓰려 노력 중이라
while을 사용하였고
구글 C++ 컨벤션을 보고 함수명을 소문자로 작성하였습니다.
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
참조 및 인용
C++ Primer
Introduction to Algorithms
https://codemasterkimc.tistory.com/35
C++ 이론을 배울수 있는 곳 정리
개요 C++을 배우는 책, 강의, 블로그, 링크 등을 공유합니다. (링크 및 간략한 설명을 하였으나 만약 원작자가 링크를 거는것을 원치 않을 경우 연락주시기 바랍니다.) 서적 https://www.amazon.com/Prime
codemasterkimc.tistory.com
https://codemasterkimc.tistory.com/50
300년차 개발자의 좋은 코드 5계명 (Clean Code)
이번 글을 통해 배워갈 내용 좋은 코드(Clean Code)를 작성하기 위해 개발자로서 생각해볼 5가지 요소를 알아보겠습니다. 개요 좋은 코드란 무엇일까요? 저는 자원이 한정적인 컴퓨터 세상에서 좋
codemasterkimc.tistory.com
'C++ > C++ 알고리즘' 카테고리의 다른 글
| 백준 2108번 통계학 C++ 구현해보기 (0) | 2021.10.30 |
|---|---|
| 백준 11944번 NN C++ 구현해보기 (0) | 2021.10.30 |
| 백준 5522번 카드게임 C++ 구현해보기 (0) | 2021.10.24 |
| 백준 5052번 전화번호 목록 C++ 구현해보기 (0) | 2021.10.16 |
| 백준 5054번 주차 C++ 구현해보기 (0) | 2021.10.16 |