코딩 테스트/백준

31403, A+B-C

셩잇님 2024. 8. 5. 10:38
반응형

 

 

★ "왜?" 라는 질문을 스스로에게 하면서 학습하자.

 

 

0. 문제 풀이 순서

  • 논리적 순서 확정
  • 관련 카테고리 혹은 문제 끌어오기
  • 필요한 자료연산 리스트업
  • 이에 제일 유리한 자료구조 선택
  • 구현

 

1. 설명

 

문제 링크 :

https://www.acmicpc.net/problem/31403

 

문제 사진 :

 

문제 설명 : 자바 스크립트에서 '수'를 계산할 때 +, -는 일반적인 덧셈 뺄셈의 의미를 가지지만, '문자열'을 계산할 때에는 +는 두 문자열을 이어붙이고, -는 양쪽 문자열을 수로 해석한 후에 빼는 것을 의미한다. 따라서 문자열 '+'일 경우에 두 문자열을 이어붙이는 것과, '-'일 경우 이를 수로 바꾸고 빼는 풀이가 필요하다.

 


 

나의 소스 코드 : 

 

#include <iostream>
#include <string>
#include <cstring>
#include <climits>
#include <cctype>
#include <algorithm>
#include <functional>
#include <tuple>
#include <utility>
#include <list>
using namespace std;

int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    
    string A, B, C;
    A = to_string(a);
    B = to_string(b);
    C = to_string(c);
    
    string AB = A + B;
    int iab = stoi(AB);
    int ic = stoi(C);
    int temp = iab - ic;
    string sABC = to_string(temp);
    
    // 수
    cout << (a + b) - c << endl;
    cout << sABC << endl;
}

 

코드 설명 : 먼저 수일 때는 일반적으로 생각하는 사칙연산을 사용하면 되기 때문에 cout 에서 (a + b) - c를 통해 처리를 해주었지만, 문자열일 때 "수"를 문자열로 변환하고, "문자열"을 수로 변환하는 로직이 필요하여 stoi 함수와 to_string 함수를 사용하여 풀었다.

 

2. 시간

  • 문제 풀이를 위해 설정한 시간 : 30분
  • 실제 풀이 시 걸렸던 시간 : 10분

 

3. 질문

  • 시간 복잡도 : 3개의 정수를 입력으로 사용하기 때문에 각 읽기 작업은 O(1)에 해당하는 시간 복잡도를 가진다. 이와 더불어 모든 작업이 상수 시간 내에 수행되므로 전체 코드의 시간 복잡도는 O(1)에 해당한다.
  • 공간 복잡도 : 정수 변수는 각각 O(1)에 해당하고, 문자열 변수 또한 정수의 자릿수에 비례하는 공간을 차지하기 때문에 이 역시 O(1)로 간주하여 공간 복잡도는 O(1)에 해당한다.
  • 어려웠던 부분 : 문자열을 수로, 수를 문자열로 변환하는 함수에 대해 생각이 나지 않아 검색을 통해 찾아보았다.

 

4. 기타

  • 최초 풀이 : 24년 8월 1일
  • 재 풀이 : 해당사항 없음
  • 왜? : 

 

 

 

반응형

'코딩 테스트 > 백준' 카테고리의 다른 글

1157, 단어 공부  (0) 2024.08.05
1065, 한수  (1) 2023.03.06
4673, 셀프 넘버  (0) 2023.03.06
15596, 정수 N개의 합  (1) 2023.03.06
4344, 평균은 넘겠지  (0) 2023.03.06