시험

#문제 1
학생들의 이름과 시험 점수가 주어지면 K를 받은 학생의 이름 등을 찾고자 합니다(동일한 시험 점수를 받은 학생이 두 명 없다고 가정). 이를 위해 다음과 같이 구조를 정의했습니다.

typedef struct Student{
    char name(20);
    int score;
}Student;

또한 다음과 같이 프로그램 구조를 작성했습니다.

1. 학생의 이름과 시험 점수로 구성된 구조체 배열을 생성 및 초기화합니다.
2. 생성된 구조체 배열을 시험 점수의 내림차순으로 정렬합니다.
3. 정렬된 구조체 배열에서 K - 1번째에 있는 학생의 이름을 return 합니다.

학생 이름을 순서대로 포함하는 배열 이름, names_len, names_len의 길이, 학생 시험 점수를 순서대로 포함하는 배열 점수, 점수의 길이, score_len, 순위를 나타내는 자연수, K를 쓰려고 합니다. 반환할 해결 함수. 위의 구조를 참고하여 코드가 제대로 동작하도록 빈칸을 채워 모든 코드를 완성하세요.


#####매개변수 설명
solve 함수의 매개변수는 이름의 길이와 함께 names_len 순서로 학생의 이름을 포함하는 names 배열, 학생의 시험 점수를 순서대로 포함하는 score 배열 및 score_len 점수의 길이와 이를 나타내는 자연수 K입니다. 계급.

  • 이름은 학생의 이름을 포함하는 배열입니다.
    • 모든 학생 이름은 알파벳 소문자만 포함해야 하며 길이는 2~15자여야 합니다.
    • 같은 이름을 가진 학생은 없습니다.
  • names_len은 5보다 크거나 같고 100보다 작거나 같은 자연수입니다.
  • 점수는 학생 시험 점수를 포함하는 배열입니다.
    • 시험 점수는 0에서 100 사이의 정수입니다. 동점은 없습니다.
  • score_len은 5 이상 100 이하의 자연수입니다.
  • names_len과 score_len은 항상 동일하며 i번째 학생의 이름과 학년은 names(i)와 score(i)에 포함됩니다.
  • K는 순위를 나타내며 1보다 크거나 같고 전체 학생 수보다 작거나 같은 자연수이다.

#####반환값 설명
학생 이름을 K랭크로 돌려주세요.


#####예

이름 name_len 점수 score_len 케이 돌려 주다
(“루카스”, “제임스”, “레비”, “엘리”, “맥스”) 5 (30,20,50,40,10) 5 2 “엘리”

#####예시 설명
시험 점수의 내림차순으로 각 학생의 이름을 정렬합니다.

“남자 이름” “엘리” “루크” “제임스” “최고”
시험 결과 50 40 30 20 10

K = 2이므로 두 번째 자리는 “eli”입니다.

#이슈 2
해밍 거리는 같은 길이의 두 문자열에서 같은 위치에 있는 다른 문자의 수입니다. 예를 들어 두 개의 이진 문자열이 “10010”과 “110”인 경우 먼저 “110” 앞에 두 개의 0을 채워 “00110”으로 만들어 두 문자열의 숫자를 맞춥니다. 두 이진 문자열의 첫 번째와 세 번째 문자가 다르기 때문에 해밍 거리는 2입니다.

  • 1001 0
  • 0011 0

두 개의 이진 문자열 binaryA와 binaryB의 해밍 거리를 찾으려고 합니다. 간단히 다음과 같이 프로그램 구조를 작성했습니다.

1단계. 길이가 더 긴 2진수 문자열의 길이를 구합니다.
2단계. 첫 번째 2진수 문자열의 길이가 더 짧다면 문자열의 앞에 0을 채워넣어 길이를 맞춰줍니다.
3단계. 두 번째 2진수 문자열의 길이가 더 짧다면 문자열의 앞에 0을 채워넣어 길이를 맞춰줍니다.
4단계. 길이가 같은 두 2진수 문자열의 해밍 거리를 구합니다.

매개변수로 binaryA와 binaryB라는 두 개의 이진 문자열이 주어지면 두 이진수의 해밍 거리를 반환하는 solve 함수를 작성했습니다. 이때 위의 구조를 참고하여 겹치는 부분을 func_a라는 함수로 작성하였다. 코드가 올바르게 작동하려면 그에 따라 빈칸을 채워 전체 코드를 완성하십시오.


매개변수 설명

두 개의 이진 문자열인 binaryA와 binaryB가 solve 함수의 매개변수로 지정됩니다.

  • binaryA의 길이는 1보다 크거나 같고 10보다 작거나 같습니다.
  • BinaryA는 모두 0 또는 1로 구성되고 0으로 시작하지 않는 문자열입니다.
  • binaryB의 길이는 1보다 크거나 같고 10보다 작거나 같습니다.
  • BinaryB는 모두 0 또는 1로 구성된 문자열이며 0으로 시작하지 않습니다.

반환 값에 대한 설명

두 이진 문자열의 해밍 거리를 반환합니다.


바이너리 A 바이너리B 돌려 주다
“10010” “110” 2
예시 설명

두 이진수의 자릿수는 각각 5와 3이며 “110” 앞에 두 개의 0을 더하여 자릿수를 같게 하여 “00110”이 됩니다. 이제 두 이진 문자열의 해밍 거리를 찾으려면 다음을 얻습니다.

  • 1001 0
  • 0011 0

위와 같이 첫 번째와 세 번째 문자가 다르기 때문에 Hamming distance는 2입니다.

#문제 3
문자열 형식으로 식을 평가하려고 합니다. 표현식은 두 개의 자연수와 연산자(‘+’, ‘-‘ 또는 ‘*’ 중 하나)로 구성됩니다. 예를 들어 “123+12″라는 식을 사용하면 계산 결과는 135입니다.

문자열로 구성된 표현식을 평가하기 위해 다음과 같은 간단한 프로그램 구조를 작성했습니다.

1단계. 주어진 식에서 연산자의 위치를 찾습니다.
2단계. 연산자의 앞과 뒤에 있는 문자열을 각각 숫자로 변환합니다.
3단계. 주어진 연산자에 맞게 연산을 수행합니다.

매개변수로 문자열 형태의 표현식이 주어지면 표현식을 평가한 결과를 반환하는 solve 함수를 작성하고 싶습니다. 위의 구조를 참조하여 주어진 함수와 매개변수 func_a, func_b, func_c로 빈칸을 채우면 코드가 제대로 작동합니다.


매개변수 설명

문자열 형태의 표현식은 솔루션 함수에 매개변수로 전달됩니다.

  • 표현식은 연산자와 두 개의 숫자의 조합입니다.
    • 연산자 ‘+’, ‘-‘, ‘*’만 사용됩니다.
    • 숫자는 1에서 10,000 사이의 자연수입니다.

반환 값에 대한 설명

식을 평가한 결과를 반환합니다.

  • 계산 결과를 문자열로 변환할 필요가 없습니다.

표현 돌려 주다
“123+12” 135
예시 설명

“+” 앞의 숫자는 123이고 그 뒤의 숫자는 12이므로 두 숫자를 더하면 135가 됩니다.

#문제 4
누군가 타임머신을 타고 과거로 돌아가 숫자 0이 없는 숫자 체계를 전파했습니다. 역사는 바뀌었고 이제 숫자 0은 사람들의 의식에서 사라졌습니다. 따라서 현재의 숫자 체계는 1, 2, 3, …, 8, 9, 11, 12, …와 같은 제로 제로로 변경되었습니다.

0이 아닌 정수인 num이 매개변수로 주어지면 그 숫자에 1을 더한 숫자를 반환하도록 solve 함수를 완성하십시오.


#####매개변수 설명
자연수 num은 해 함수에 매개변수로 전달됩니다.

  • num은 1보다 크거나 같고 999,999,999,999,999,999보다 작거나 같은 자연수이며 0이 아닙니다.

#####반환값 설명
자연수 num에 1을 더한 수를 반환합니다.


#####예

숫자 돌려 주다
9949999 9951111

#####예시 설명

9,949,999 더하기 1은 9,950,000이지만 0은 존재하지 않으므로 9,951,111입니다.

#문제 5
크기가 nxn인 그리드는 다음과 같이 1에서 nxn까지의 숫자를 포함합니다.
그림
이때 숫자를 다음과 같은 순서로 배열하면 n-vortex 수라고 합니다.
그림
소용돌이의 수는 1행 1열부터 n행 n열까지 대각선에 있는 숫자의 합을 구해야 합니다.
그림
위의 예에서 대각선에 있는 숫자의 합은 15입니다.
격자 크기 n이 주어졌을 때, n-소용돌이 숫자의 대각선에 있는 숫자의 합을 반환하는 solve 함수를 완성하십시오.


매개변수 설명

그리드 너비 n은 솔루션 함수의 매개변수로 제공됩니다.

  • n은 1 이상 100 이하의 자연수이다.

반환 값에 대한 설명

n-swirl 숫자의 대각선에 있는 숫자의 합을 돌려주세요.


N 돌려 주다
15
2 4
예시 설명

예 1
문제의 예와 같습니다.

예 #2
그림
1과 3을 더하면 4가 됩니다.

#문제 6
체스에서 기사는 아래와 같이 8개의 원으로 둘러싸인 방향으로 동시에 이동할 수 있습니다.

그림

그러나 나이트는 체스판 밖으로 이동할 수 없습니다.

체스판에서 각 사각형의 위치는 다음과 같습니다.
그림
예를 들어 라인 A와 라인 1이 겹치는 부분을 “A1″이라고 합니다.

기사의 위치를 ​​매개변수로 하여 기사를 한 번 움직여서 이동할 수 있는 사각형의 수를 반환하는 solve 함수를 완성합니다.


#####매개변수 설명
기사의 위치인 pos는 솔루션 함수의 매개변수로 제공됩니다.

  • pos는 대문자 A~H와 1보다 크거나 같고 8보다 작거나 같은 정수로 구성된 두 글자 문자열입니다.
  • 잘못된 장소가 주어진 경우는 없습니다.

#####반환값 설명
기사를 한번 움직여서 움직일 수 있는 칸의 수를 돌려주세요.


#####예

위치 돌려 주다
“A7”

#####예시 설명
기사가 위치 A7에 있을 때 아래 그림과 같이 왼쪽으로는 이동할 수 없으며, 위쪽을 제외하고 오른쪽으로 3칸 이동할 수 있습니다.
그림
그래서 그냥 3을 반환합니다.

#문제 7
오름차순으로 정렬된 arrA 및 arrB라는 두 개의 배열을 하나의 배열로 결합하고 싶습니다. 그러나 연결 후 배열도 오름차순으로 정렬해야 합니다.

예를 들어 arrA = (-2, 3, 5, 9) 및 arrB = (0, 1, 5)인 경우 두 배열을 오름차순으로 정렬된 배열로 결합하면 (-2, 0, 1, 3 , 5 , 5, 9).

두 개의 배열 arrA와 arrA의 길이 arrA_len, arrB, arrB의 길이 arrB_len이 오름차순으로 정렬된 경우 두 배열을 하나의 배열로 결합하여 오름차순으로 정렬하는 solve 함수를 작성하고 싶습니다. 반환. 전체 코드를 완성하려면 빈칸을 채워주세요.


매개변수 설명

오름차순으로 정렬된 두 배열 arrA와 arrA의 길이인 arrA_len, arrB와 arrB의 길이인 arrB_len이 솔루션 함수의 매개변수로 지정됩니다.

  • arrA_len은 1에서 200,000 사이의 자연수입니다.
  • arrA의 요소는 -1,000,000 이상 1,000,000 이하의 정수입니다.
  • arrB_len의 길이는 1 이상 200,000 이하의 자연수이다.
  • arrB의 요소는 -1,000,000 이상 1,000,000 이하의 정수입니다.

반환 값에 대한 설명

두 배열 arrA 및 arrB를 오름차순으로 정렬된 배열로 결합하고 반환합니다.


아라 arrA_len arrB arrB_len 돌려 주다
(-2, 3, 5, 9) 4 (0, 1, 5) (-2, 0, 1, 3, 5, 5, 9)

#문제 8
1번부터 N번까지의 후보를 대상으로 투표가 진행되었습니다. 예를 들어, 투표 결과가 (1, 5, 4, 3, 2, 5, 2, 5, 5, 4) 순으로 (1, 5, 4, 3, 2, 5, 2 , 5, 5) , 4). 후보에 투표했음을 나타냅니다. 이 시점에서 우리는 가장 많은 표를 얻은 후보의 번호를 얻고자 합니다.

주어진 풀이 함수는 후보의 수 N, 투표 결과가 담긴 배열 득표, 득표의 길이 votes_len을 매개변수로 하여 가장 많은 득표를 한 후보의 수를 반환하는 함수이다. 그러나 코드의 일부가 잘못되어 일부 입력에 대해 제대로 작동하지 않습니다. 지정된 코드에서 _모든 입력에 대해 올바르게 작동하도록 _를 변경하십시오.


#####매개변수 설명
솔루션 함수의 매개 변수는 후보 수 N과 투표 결과가 있는 배열 투표 및 투표의 길이 votes_len입니다.

  • N은 1보다 크거나 같고 10보다 작거나 같은 자연수이다.
  • votes_len은 1에서 100 사이의 자연수입니다.
  • 음성의 원소는 1보다 크거나 같고 N보다 작거나 같은 자연수이다.

#####반환값 설명
가장 많은 표를 얻은 후보의 번호를 배열에 넣고 반환합니다.

  • 가장 많은 표를 얻은 후보가 2명 이상인 경우 모든 후보 번호를 배열에 넣고 오름차순으로 반환합니다.

#####예

N 목소리 votes_len 돌려 주다
5 (1, 5, 4, 3, 2, 5, 2, 5, 5, 4) 10 (5)
4 (1, 3, 2, 3, 2) 5 (2, 3)

#####예시 설명
예 1
1부터 5까지 5명의 후보가 있고 투표 결과는 (1, 5, 4, 3, 2, 5, 2, 5, 5, 4)입니다. 각 후보의 득표수는 다음과 같습니다.

  • 1위 후보 1표
  • 2위 후보 2표
  • 후보 3명 1표
  • 4번 후보는 2표를 얻습니다.
  • 5번 후보는 4표를 얻습니다.

이 경우 후보 5번이 4표로 가장 많은 표를 받았습니다.

예 #2
후보 1은 1표, 후보 2는 2표, 후보 3은 2표를 얻었다. 2번과 3번 후보가 통틀어 가장 많은 표를 받았기 때문에 (2, 3) 오름차순으로 정렬하여 돌아올 수 있습니다.

#문제 9
두 명의 학생 A와 B가 계단 게임을 하고 있었습니다.
계단 게임의 규칙은 다음과 같습니다.

1. 계단 제일 아래에서 게임을 시작합니다. (0번째 칸)
2. 가위바위보를 합니다.
3. 이기면 계단 세 칸을 올라가고, 지면 한 칸을 내려가고, 비기면 제자리에 있습니다.
4. 계단 제일 아래에서 지면 제자리에 있습니다.
5. 2~4 과정을 열 번 반복합니다.

A와 B가 계단 게임을 완료한 후 계단 꼭대기에 A가 몇 개 있는지 알아봅시다.

recordA의 길이인 recordA와 recordB의 길이인 recordA_len, recordB, A와 B의 가위바위보 레코드를 순서대로 포함하는 배열인 recordB_len을 매개변수로 주면 다음과 같이 solve 함수가 작성되어 반환된다. 게임 종료 후 A의 위치. . 그러나 코드의 일부가 잘못되어 일부 입력에 대해 제대로 작동하지 않습니다. 지정된 코드에서 _모든 입력에 대해 올바르게 작동하도록 _를 변경하십시오.


#####매개변수 설명
목록 recordA와 recordB는 매개변수로 주어지며 A와 B의 가위바위보 레코드를 순서대로 포함합니다.

  • recordA와 recordB의 요소는 0, 1, 2 중 하나이며 순서대로 가위바위보를 의미합니다.
  • recordA와 recordB의 길이는 10입니다.

#####반환값 설명
solve 함수는 계단 게임을 완료한 후 계단 상단에 있는 셀 A의 수를 반환합니다.

  • 계단의 끝은 0번째 셀입니다.

#####예

레코드A recordA_len 레코드비 recordB_len 돌려 주다
(2,0,0,0,0,0,1,1,0,0) 10 (0,0,0,0,2,2,0,2,2,2) 10 14

#####예시 설명

레코드A 종이 가위 가위 가위 가위 가위 바위 바위 가위 가위
레코드비 가위 가위 가위 가위 종이 종이 가위 종이 종이 종이
결과 0 0 0 0 +3 +6 +9 +8 +11 +14

#문제 10
지난 n일 동안의 주가 배열을 순서대로 가지고 있습니다. 이 시점에서 우리는 다음 규칙에 따라 주식을 사고 팔 때 최대 이익을 찾고자 합니다.

  • n일에 한 번만 주식을 살 수 있습니다.
  • n일에 한 번만 주식을 팔 수 있습니다.
  • 주식을 산 당일에 매도할 수 없으며 적어도 하루 후에 매도할 수 있습니다.
  • 주식은 적어도 한 번은 사야 하고 한 번은 팔아야 합니다.

주식을 매도하는 경우 이전에 매수한 적이 있어야 하며 최대 수익률은 양수가 될 수 없습니다.

연속 n일 동안의 주가가 포함된 배열 price와 배열 price_len의 길이가 매개변수로 주어진 규칙에 따라 주식을 한 번만 사고 팔아 얻을 수 있는 최대 이익을 반환하는 솔루션 함수를 작성하십시오. 그러나 코드의 일부가 잘못되어 코드가 제대로 작동하지 않습니다. 지정된 코드에서 _모든 입력에 대해 올바르게 작동하도록 _ 만 변경하십시오.


#####매개변수 설명
배열 가격과 배열 price_len의 길이는 솔루션 함수의 매개변수로 제공됩니다.

  • 상금의 길이는 2 이상 1,000,000 이하입니다.
  • 각 가격 요소는 1에서 1,000 사이의 자연수입니다.

#####반환값 설명
규정에 따라 주식을 한번만 사고 팔아 얻을 수 있는 최대 수익을 돌려주세요.


물가 price_len 돌려 주다
(1,2,3) 2
(3.1) 2 -2
예시 설명

예 1
3일 연속 주가는 (1, 2, 3) ok이고, 첫날 주식을 사서 3일째에 팔면 이익은 2로 그때 최대다.

예 #2
과제에서 설명한대로 무조건 한번 사서 한번 팔아야 합니다. 유일한 옵션은 첫날에 매수하고 둘째 날에 매도하는 것이므로 이익은 -2 또는 손실은 2입니다.