본문 바로가기

PS/Programmers

프로그래머스 [PCCE 기출문제] 1번 / 출력

문제

주어진 초기 코드는 변수에 데이터를 저장하고 출력하는 코드입니다. 아래와 같이 출력되도록 빈칸을 채워 코드를 완성해 주세요.

Spring is beginning
13
310

 

의도한 풀이는 이것일 것이다.

#include <iostream>

using namespace std;

int main(void) {
    string msg = "Spring is beginning";
    int val1 = 3;
    string val2 = "3";

    cout << msg << endl;
    cout << val1 + 10 << endl;
    cout << val2 + "10" << endl;

    return 0;
}

 

그런데, 빈 칸 내의 내용에 아무런 제약이 존재하지 않아 특수한 풀이가 가능하다.

#include <iostream>

using namespace std;

int main(void) {
    string msg = ""; printf("Spring is beginning\n13\n310"); return 0;
    int val1 = 0;
    string val2 = "";

    cout << msg << endl;
    cout << val1 + 10 << endl;
    cout << val2 + "10" << endl;

    return 0;
}

 

마치 SQL 인젝션을 떠올리게 한다.

 

다른 언어로도 가능하다.

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        String msg = ""; System.out.print("Spring is beginning\n13\n310"); if (true) return;
        int val1 = 0;
        String val2 = "";

        System.out.println(msg);
        System.out.println(val1 + 10);
        System.out.println(val2 + "10");
    }
}

 

string_msg = print('Spring is beginning\n13\n310'); exit()
int_val = None
string_val = None

print(string_msg)
print(int_val + 10)
print(string_val + "10")