본문 바로가기

알고리즘/[프로그래머스]Lv.0

[프로그래머스]Lv0. 두 수의 나눗셈

본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+  Java언어 내용도 포함되어있습니다. )

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120806?language=cpp 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

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 형변환

 

 

 

 

https://wikidocs.net/143100

 

01.01.05. 형변환(type conversion)

[TOC] 형변환(type conversion)은 캐스팅(casting) 이라고도 하며 명시적(explicit) 또는 묵시적(implicit)으로 자료의 형식을 변환하는 것을 …

wikidocs.net