본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/120806?language=cpp
1.문제설명
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
2. 문제해결 접근
- num1과 num2 연산 후, 소수점 이하를 버리는 함수를 사용한다.
- 변수와 인수의 자료값에 따라 값이 다르게 표기될 수 있다.
3.답안 : [언어 : C++ ]
#include <string>
#include <vector>
#include <math.h>
#include <iostream>
using namespace std;
int solution(int num1, float num2) {
// 인수와 변수의 자료형을 float로 수정하였다.
float answer = (num1/num2)*1000;
// 소수점 출력값을 버리는 floor 함수를 사용한다.
answer = floor(answer);
return answer;
}
아 시뻘건게 아주 무섭다... 함수를 사용한 탓일까, 아니면 인수의 자료형을 변환한탓일까.
C++의 형변환에 대해 추가적으로 공부할 수 있게 되었다.
자바때와는 결정적으로 다른 부분이 있다면,
형변환 자료형에 괄호를 치는것이 아닌, 형변환을 하고자 하는 변수에 괄호표시를 해야한다는 점이다.
float answer = float(num1) / float(num2) *1000;
4. C++ 문법 설명과 표현법
위의 자바표현으로 알고 있었던, 자료형을 괄호로 감싸는 형변환은 C스타일의 형변환이다.
double d = 3.141592;
int n = (int)d
C++ 에서 일반적으로 자료형에 대한 형변환은 상황에 따라 네가지 방식으로 구분할 수 있다.
static_cast<new_type>(value); ///< 형변환 방법을 컴파일러가 아는 경우
const_cast<new_type>(value); ///< 일시적으로 const 지정 또는 해제
reinterpret_cast<new_type>(value); ///< 자료를 재해석하여 형변환하는 것으로 주로 포인터형에 사용
dynamic_cast<new_type>(value); ///< 상속 관계 중 다형성을 사용할 수 있는 경우 up, down 형변환
'알고리즘 > [프로그래머스]Lv.0' 카테고리의 다른 글
[프로그래머스]Lv0. 숨어있는 숫자의 덧셈 (1) (0) | 2022.11.03 |
---|---|
[프로그래머스]Lv0. 문자열안에 문자열 (0) | 2022.11.03 |
[프로그래머스]Lv0. 문자 반복 출력하기 (0) | 2022.10.31 |
[프로그래머스]Lv0. 제곱수 판별하기 (0) | 2022.10.28 |
[프로그래머스]Lv0.자릿수 더하기 (0) | 2022.10.25 |