본문 바로가기

임베디드 시스템반도체 개발자 과정 by 서울기술교육센터/후기

10일차

7월 4일

오늘은 기술에 대한 수업이 아니라 취업을 위한 수업이었다.

 

여러가지를 했는데, 결국 가장 중요한 것은 의사소통으로 본인의 의견을 어떻게 잘 피력할 것인가, 그와 동시에 상대방에 대한 경청과 존중은 어떻게 유지할 것인가에 초점을 맞춰 서로 얘기를 나누는 걸 많이 했다.

 

나를 표현하는 키워드를 생각해보고 스스로에 대해 생각해봤다.

 

현재 나는 초보 개발자를 키워드로 뽑을 수 있을 거 같다. 이 과정을 통해서 나를 정의할 수 있는 키워드를 늘려야겠다는 생각이 들었다.

 

상대방을 설득할 수 있는 방법론으로 see - feel - change 전략에 대해서 배우기도 했다.

 

스스로에 대한 상황 파악과 행동 전략으로 5why를 배우기도 했다.

----

오늘처럼 수업에서 여유가 있다면 c 언어를 공부하고 있으니까 코딩테스트도 조금씩 풀어보려고 한다.

 

정말 간단한 문제를 풀려고 했는데 몇 시간 동안 오류를 해결하지 못 했다.

 

초기에 문제에서 제시된 것은 문제 상황을 해결할 수 있도록 solution 내부를 작성하라는 것이었다.

 

long long solution(int price, int money, int count){}

 

int와 long long 사이, 크기 차이도 인지하고 있었고, 문제를 읽고 어떻게 코드를 작성해야할지 논리도 쉽게 짰다.

 

내부에서 price, count로 연산된 값을 long long으로 선언한 변수에 담으려고 했는데, 이 부분이 처리가 안 됐다.

 

컴파일러에서는 됐는데 정답처리가 되지 않길래, 아예 solution 내부에서 price, count를 (long long)으로 자료형 변경을 시도했는데 이마저도 먹히지 않았다.

 

한참을 헤매다가 long long solution(long long price, long long money, long long count){}으로 처음 받을 때부터 자료형을 다르게 했더니 문제가 해결됐다. int에서 long long처럼 크기가 커지는 부분은 자연스레 변형을 해준다고 배웠는데, 이 부분이 에러가 되기도 하다니. 또 배웠다.

----

새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

long long solution(long long price, long long money, long long count) {
    long long val;
    long long answer;

    //주어진 상황에 따라 드는 비용을 먼저 구해 val에 담았다. count는 1부터 n까지 자연수합이라서 굳이 += 연산자를 사용하지 않았다.
    if(count % 2 ==0){
        val = price * ((count + 1) * (count / 2));
    }
    else{
        val = price * ((count * (count/2)) + count);
    }
    //구한 val과 현재 돈을 비교해 어떤 값을 return할지 결정해 문제를 해결한다.
    if(money >= val){
        answer = 0;
    }
    else{
        answer = val - money;
    }
 
    return answer;
}

----

내가 해결 못한 long long 문제를 해결한 부분이 보인다.

long long solution(int price, int money, int count) {
    long long price_l = price;
    long long money_l = money;
    long long count_l = count;

    long long answer = count_l * (2 * price_l + (count_l - 1) * price_l) / 2 - money_l;
    return answer < 0 ? 0 : answer;
}

새로 선언한 변수에 담아서 해결될 수 있음을 보고, 가우스합이 저렇게 될 수 있음도 알았다.

 

수식을 너무 가볍게 생각하고 더 간단해질 수 있음을 놓쳐서 아쉽다.

 

? : 부분은 정말 아예 기억도 안 났다. 코드를 짧게 쓰기에 유용한 부분 같다.

'임베디드 시스템반도체 개발자 과정 by 서울기술교육센터 > 후기' 카테고리의 다른 글

20일차  (0) 2022.07.18
11일차  (0) 2022.07.07
9일차  (0) 2022.07.01
8일차  (0) 2022.06.30
7일차  (0) 2022.06.29