개발자 톡

연습문제 톡 [HSAT 4회 정기 코딩 인증평가 기출] 통근버스 출발 순서 검증하기

[4차 통근버스 문제] 파이썬으로 풀면 맞고 c++로 풀면 틀립니다

등록일
2023-03-07 15:18:14
조회수
753
작성자
kosy1782

도대체 파이썬 코드랑 c++ 코드 어느 부분이 달라서 c++만 틀리는 걸까요..

import sys
input = sys.stdin.readline

n = int(input())
bus = list(map(int, input().split()))
arr = [[0 for i in range(n + 1)] for j in range(n + 1)]

for j in range(n - 1, -1, -1):
    for x in range(1, n + 1):
        if bus[j] < x:
            arr[x][j] = arr[x][j + 1] + 1
        else:
            arr[x][j] = arr[x][j + 1]

ans = 0
for i in range(n):
    for j in range(i, n):
        if bus[i] < bus[j]:
            ans += arr[bus[i]][j]

print(ans)



#include 
#include 

using namespace std;

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int N;
	cin >> N;

	int* bus = new int[N];
	for(int i=0; i> bus[i];
	}

	// arr[x][j] := j번째보다 오른쪽에 있는 숫자들 중, x보다 값이 작은 것들의 개수
	vector> arr(N+1, vector(N+1, 0));

	for(int j=N-1; j>=0; j--){ // N-1부터 거꾸로 해야함; N인 경우는 0
		for(int x=1; x<=N; x++){
			if(bus[j] < x){ // j번째 버스가 x보다 작으면
				arr[x][j] = arr[x][j+1] + 1; // j번째보다 오른쪽에 있는 숫자들 중 x보다 값이 작은 것들의 개수가 증가한다.
			} else { // j번째 버스가 x보다 크거나 같으면
				arr[x][j] = arr[x][j+1]; // j번째보다 오른쪽에 있는 숫자들 중 x보다 값이 작은 것들의 개수가 증가하지 않는다.
			}
		}
	}

	int answer = 0;
	for(int i=0; i



#[hsat_4회_정기_코딩_인증평가_기출]_통근버스_출발_순서_검증하기
#python

이 카테고리의 톡 더보기