SW취업역량강화 코딩테스트 1

인소리·2022년 9월 3일
0

Coding Test

목록 보기
7/13

1. 의좋은 형제(구름에듀)

문제 정보

입출력 예시

코드(C언어)

#include <stdio.h>

int main() {
	int N1, N2, D;	//N1=진우 식량, N2=선우 식량, D=두 형제의 식량의 양을 알고 싶은 날
	int f = 0;
	scanf_s("%d %d", &N1, &N2);
	scanf_s("%d", &D);
	for (int i = 1; i <= D; i++) {
		if (i % 2 == 1) {
			if (N1 % 2 == 1) f = (N1 / 2) + 1;
			else if (N1 % 2 == 0) f = N1 / 2;
			N1 -= f;
			N2 += f;
		}
		else if (i % 2 == 0) {
			if (N2 % 2 == 1) f = (N2 / 2) + 1;
			else if (N2 % 2 == 0) f = N2 / 2;
			N1 += f;
			N2 -= f;
		}
	}
	printf("%d %d", N1, N2);

	return 0;
}

코드 풀이

홀수 날에는 진우의 식량을 선우에게 주고 짝수 날에는 선우의 식량을 진우에게 주도록 하였다. 그리고 조건문을 써서 식량이 홀수일 때는 2로 나누고 1을 더해서 계산하였다.

2. 같은 숫자는 싫어(프로그래머스)

문제 정보

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

제한 조건

  • 배열 arr의 크기 : 1,000,000 이하의 자연수
  • 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

입출력 예시

arranswer
[1,1,3,3,0,1,1][1,3,0,1]
[4,4,4,3,3][4,3]

코드(C++)

#include <iostream>
#include <vector>

using namespace std;

vector<int> solution(vector<int> arr)
{
    vector<int> answer;
    int su = arr[0];
    answer.push_back(arr[0]);
    for (int i = 1; i < arr.size(); i++) {
        if (su != arr[i]) {
            answer.push_back(arr[i]);
            su = arr[i];
        }
    }
}

코드 풀이

비교할 su를 arr[0]으로 초기화하고 arr의 길이만큼 반복하며 연속되지 않는 숫자만 찾아서 answer에 넣었다.

💡 vector: STL에 있는 동적 배열 구조 클래스(자바의 ArrayList와 유사)
💡 push_back: 배열의 맨 끝에 요소 추가

profile
코딩이라는 감옥에 갇혀 사는 삶

0개의 댓글