1. 개발 배경 학부시절 임베디드 개발을 하면서 가장 불편했던 것이 디버깅이었다. 실제 값을 눈으로 보는것은 너무 힘들뿐더러 이것을 가시적으로 표현하기 위해 그래프를 그린다거나 이런것은 상상도 못할일이었다. 물론 '돈'을 투자한다면 디버거를 사면 별다른 작업 없이 실시간으로 모니터링이 가능하다. 하지만 과한 지출을 줄이기 위한 방법을 생각하다가 개발하게 되었다. 유투브 여러 영상을 보던 중 추천 영상에 해외 채널에서 아두이노 모니터라하여 구현해 놓은 것을 본 적이 있다. 사실 눌러보진 않았지만 썸네일만 보았을때, 꽤나 인상 깊었다. 이런식으로 모니터링 하면 좋을텐데라는 생각이 들었다. 사실 아두이노 스케치의 경우 시리얼 모니터와 시리얼 플로터 라는 것이 있다. 하지만 두개 다 상당히 제한적이다. 특히 시..
이 문제를 접근할 때, 소수를 구하는 문제가 생각났다. 소수를 구하는 경우 에라토스테네스의 체 방식을 사용했었는데 그것을 응용해보았다. 에라토스테네스의 체란, 고대 그리스 수학자 에라토스테네스가 발견한 방식으로, 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 가장 첫번째로 2는 소수이므로 2를 저장한다. 그리고 나서 2를 제외한 모든 2의 배수를 지워나간다. 마찬가지로 3은 지워지지 않은 숫자로 소수이다. 3을 저장한 후 2와 같은 방법으로 3의 배수를 모두 지워나간다. 이렇게 지워지지 않은 수를 저장하고 본인을 제외한 본인의 배수들을 지워나게 되면 소수를 구할 수 있다. 이 방식을 코드화 하면, 구하고자 하는 구간의 수만큼의 배열을 bool형으로 만든다. 예를 들어, 100까지 구간의 수 중..
문제를 풀기 전 간단하게 int형 숫자를 자릿수 별로 쪼개는 방법을 간단하게 소개하겠다. 만약 주어진 int형이 몇자리 숫자인지만 안다면 간단하게 풀리는 문제이다. 이 문제의 경우 범위가 0부터 99로 최대 자릿수는 2자리이다. 즉, 1번의 나눗셈 과정만 거치면 각 자리의 숫자를 분리할 수 있다. 주어진 숫자를 X라 하자. 이 X가 한자리 숫자인지 두자리 숫자인지 모른다고 가정하자. 주어진 X를 10으로 나누고 나눈 몫을 따로 저장 후 X의 나머지를 다른 변수에 저장한다. 한자리 숫자의 경우 몫은 0이 저장될 것이고 나머지 값이 X그대로 저장이 될 것이다. 반대로 X가 두자리 숫자일 경우 10의 자리 숫자가 몫으로서 첫번째 변수에 저장이 될 것이고 나머지는 1의 자리 숫자로 10으로 나눈 나머지 값이 두..
주어진 문제를 보면 평균을 넘는 인원수를 조사해야하는 것이 핵심이다. 이 문제에서는 2차원 배열을 사용하였는데, 그 이유는 첫번째 줄에 주어지는 조건이 테스트 케이스가 몇 개인지 주어진다. 그러므로 한번만 계산을 하는 것이 아니다. 즉, 테스트 케이스가 C개 주어질 경우 C개의 테스트 케이스의 백분율을 조사하여야 한다. 그렇기 때문에 100xMAX(여기서 MAX는 최대 테스트 케이스의 개수를 의미한다)의 배열을 선언하여 활용하였다.풀이 방향: 1. 테스트 케이스에서 주어진 배열을 입력받으면서 점수의 총합을 계산(반복문을 2번쓰는 것보다 효율적일 것이라 생각)2. 모든 입력을 받은 후 총합을 입력받은 수만큼 나눠 평균을 구한다.3. 구한 평균을 활용하여 다시 저장한 점수들을 체크하면서 평균을 넘었을 경우에..
코딩을 하기 앞서 문제에서 준 조건을 읽어봤을 때, 세가지 과정이 필요함을 알 수 있다.1. 입력된 값중에 가장 큰 값 찾기2. 가장 큰 값을 M이라 두었을 때, 모든 값을 (점수/M)*100으로 바꾼다.3. 수정된 값을 이용하여 산술평균을 구한다.평균을 구하면서 나눗셈 연산이 들어가기 때문에, double형으로 점수 입력 배열을 선언했다. 입력받을 수 있는 과목의 최대 수는 1,000이므로 배열의 크기 또한 1,000으로 만들었다. 최대값을 탐색하는 과정은 먼저 최대값을 0으로 초기화 한 후, 배열의 첫번째 원소부터 마지막 원소까지 탐색했다. 만약 최대값과 해당 원소의 크기를 비교했을 때, 해당 원소의 값이 클 경우 최대값을 해당 원소 값으로 초기화 해준다. 최대값을 찾은 이후에는 위의 "(점수/M)*..