반응형
안녕하세요!~ 프로그램밍 언어 공부하거나 코딩 테스트 준비 과정에서 앞으로 자주 쓰이는데 왠지 기억하지 못할 때 바로 찾을수 있는 좋은 기능이나 정보들 담아서 기록해봅니다.
Number to String, String to Number | 정수를 문자열로 변환
to_string()은 정수를 해당하는 문자열로 변환하는 함수입니다.
stoi()는 문자열를 정수로 변환하는 함수입니다.
다음 예시로 두 정수를 문자열로 변환하고 합치는 예시입니다. 결과는 605 나옵니다.
int a = 60, int b = 5;
string ab = to_string(a) + to_string(b);
result = stoi(ab);
두 수의 연산값 비교하기 | a ⊕ b
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다.
예를 들면 다음과 같습니다.
12 ⊕ 3 = 123
3 ⊕ 12 = 312
다음 코드는 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b⊕ a 중 더 큰 값을 return하는 함수입니다.
int solution(int a, int b) {
int ab = to_string(a) + to_string(b);
int ba = to_string(b) + to_string(a);
if(ab > ba ) { return stoi(ab); }
else { return stoi(ba); }
}
변수 ab, ba 는 정수의 a, b 값을 문자열로 반환해 합치는 값입니다. ab, ba 중 큰 값을 바로 stoi() 함수를 이용해 문자열에서 정수로 반환해 값을 retunr 해줍니다.
vector<int> 동적 배열 | Dynamic Array
vector<int>는 C++의 표준 라이브러리로 포함되고 vector는 가변 크기의 배열을 저장하고 관리하는 기능을 제공합니다. vector<int>를 사용하면 정수형 데이터를 저장하고, 필요에 따라 동적으로 크기를 조정할 수 있습니다. 이는 배열과 달리 사이즈가 고정되어 있지 않으며, 동적으로 메모리를 할당하여 요소를 저장합니다.
vector<int>의 자주 쓰이는 중요한 특징은 다음과 같습니다:
가변 크기
vector는 요소의 개수를 동적으로 조정할 수 있습니다. push_back() 함수를 사용하여 요소를 추가하거나, pop_back() 함수를 사용하여 요소를 제거할 수 있습니다. 또한, resize() 함수를 통해 크기를 직접 조절할 수 있습니다.
빠른 임의 접근
vector는 인덱스를 사용하여 임의의 요소에 빠르게 접근할 수 있습니다. 배열처럼 인덱스를 이용하여 요소를 읽거나 수정할 수 있습니다.
메모리 관리
vector는 내부적으로 메모리를 할당하고 관리합니다. 크기가 변할 때마다 필요한 메모리를 동적으로 할당하거나 해제합니다. 메모리 관리에 대한 부담을 줄여주므로 편리하게 사용할 수 있습니다.
반복자 지원
vector는 반복자(iterator)를 통해 컨테이너의 요소를 반복적으로 탐색할 수 있습니다. 반복자를 사용하면 범위 기반의 for 루프나 알고리즘 함수 등을 활용하여 요소를 처리할 수 있습니다.
/* size() 함수 사용 */
vector<int> list;
int len = list.size();
int a = 60, int b = 5;
string ab = to_string(a) + to_string(b);
result = stoi(ab);
한 자리 정수로 이루어진 문자열 정수의 합
한 자리 정수로 이루어진 문자열 num_str이 주어질 때, 각 자리수의 합을 구하는 간단한 예제입니다.
안입출력 예시로 "123456789" 문자열 안의 모든 숫자를 더하면 45가 됩니다. 따라서 "1000000" 의 합도 1로 나와야합니다.
str | result |
"123456789" | 45 |
"1000000" | 1 |
해결 방법은문자열의 길이를 순회하면서 각 문자를 정수로 변환하기 위해 num_str[i] - '0 ' 을 사용하고, 변환한 값을answer에 누적합니다. 마지막으로 answer을 출력합니다. 예를 들어, 문자열 "123456789"의 각 자리수를 합산하면 1+2+3+4+5+6+7+8+9 = 45가 되어 결과로 출력됩니다.
#include <string>
#include <vector>
using namespace std;
int solution(string str) {
//Sum init
int answer = 0;
for(int i = 0; i < str.length(); i++){
// 문자를 정수로 변환
int num = str[i] - '0';
answer += num;
}
return answer;
}
여시서 핵심 부분은 int num = str[i] - '0' 는 문자를 해당하는 정수 값으로 변환하는 과정입니다.
C++에서 문자(char)와 정수(int)는 ASCII 코드 값으로 표현됩니다. 숫자 '0'부터 '9'까지의 ASCII 코드 값은 연속적으로 배치되어 있습니다. '0'의 ASCII 코드 값은 48이고, '1'부터 '9'의 ASCII 코드 값은 각각 49부터 57까지입니다.
문자열에서 특정 문자를 정수로 변환하기 위해서는 해당 문자의 ASCII 코드 값에서 '0'의 ASCII 코드 값을 뺀 결과를 사용합니다. 이렇게 함으로써 숫자 문자를 그에 해당하는 정수 값으로 변환할 수 있습니다.
예를 들어, 문자 '5'를 정수로 변환하려면 '5'의 ASCII 코드 값인 53에서 '0'의 ASCII 코드 값인 48을 뺀 결과인 5를 얻을 수 있습니다.
따라서 str[i] - '0'은 문자열 str의 i번째 문자를 해당하는 정수 값으로 변환하는 것을 의미합니다.
안녕하세요!~ 프로그램밍 언어 공부하거나 코딩 테스트 준비 과정에서 앞으로 자주 쓰이는데 왠지 기억하지 못할 때 바로 찾을수 있는 좋은 기능이나 정보들 담아서 기록해봅니다.
반응형
'Computer Science > Programmers' 카테고리의 다른 글
[C++] 프로그래머스 배열 뒤집기, Reverse an Array (0) | 2023.12.26 |
---|---|
[ 프로그래머스 ] 🚑 진료 순서 정하기 | C++, Javascript (2) | 2023.06.19 |
[ 프로그래머스 ] 수열과 구간 쿼리 2, C++, Javascript (0) | 2023.06.19 |
[ 프로그래머스 ] 코드 처리하기, C++ (1) | 2023.06.19 |
[프로그래머스] 배열 만들기 2 C++ (0) | 2023.05.19 |