반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 네이버 검색 시스템
- python3
- 리트코드
- Python
- 격리수준
- ASF-110
- Github
- Pro-Con
- SRE
- Algorithmus
- 알고리즘
- 백트래킹
- 백준
- Ultimate Search
- LeetCode
- 알고리즘 종류 정리
- DP
- 프로콘
- 취준
- C++
- programmers
- 코딩테스트
- git
- 자소서
- 프로콘 갈림현상
- algorithm
- baekjoon
- GitHub Desktop
- 프로그래머스
- 제노블레이드 2
Archives
- Today
- Total
산타는 없다
[프로그래머스 / programmers] 최댓값과 최솟값 풀이 - C++ 본문
반응형
문제 원문
문제 설명
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 1 2 3 4라면 1 4를 리턴하고, -1 -2 -3 -4라면 -4 -1을 리턴하면 됩니다.
제한 조건
s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
입출력 예
s | return |
1 2 3 4 | 1 4 |
-1 -2 -3 -4 | -4 -1 |
-1 -1 | -1 -1 |
코드 원문
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
return answer;
}
풀이
string을 split하는 문제입니다.
공백을 기준으로 숫자를 구분합니다.
처음엔 getline을 이용하여 split을 하였으나 직접 구현도 해보았습니다.
성공 코드
getline 사용
#include <string>
#include <vector>
#include <sstream>
#include <string>
using namespace std;
string solution(string s) {
string answer = "";
int nLast = -1;
int nMax;
int nMin;
stringstream ss(s);
string strTemp;
getline(ss, strTemp, ' ');
int nTemp = stoi(strTemp);
nMax = nTemp;
nMin = nTemp;
while (getline(ss, strTemp, ' '))
{
nTemp = stoi(strTemp);
if (nMax < nTemp) nMax = nTemp;
if (nMin > nTemp) nMin = nTemp;
}
answer += to_string(nMin);
answer += ' ';
answer += to_string(nMax);
return answer;
}
getline, stoi 미사용
#include <vector>
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
string solution(string s) {
string answer = "";
int nLast = -1;
int nMax;
int nMin;
int nPow = 0;
bool Flag = false;
string strTemp;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == ' ')
{
int nTemp = 0;
for (int j = strTemp.size() - 1; j >= 0; j--)
{
if (strTemp[j] == '-')
{
nTemp *= -1;
}
else
{
nTemp += (pow(10, nPow++) * (strTemp[j] - '0'));
}
}
//처음 값 입력
if (!Flag)
{
nMax = nTemp;
nMin = nTemp;
Flag = true;
}
else
{
if (nMax < nTemp) nMax = nTemp;
if (nMin > nTemp) nMin = nTemp;
}
//변수 초기화
nPow = 0;
strTemp = "";
}
else
{
strTemp += s[i];
//마지막 숫자를 처리하기 위해서 공백 추가
if (i == (s.size() - 1))
s += ' ';
}
}
answer += to_string(nMin);
answer += ' ';
answer += to_string(nMax);
return answer;
}
결과
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / programmers] 피로도 - C++ (0) | 2021.12.12 |
---|---|
[프로그래머스 / programmers] 후보키 - python (0) | 2021.09.01 |
[프로그래머스 / programmers] 디스크 컨트롤러 - C++ (0) | 2021.04.06 |
Comments