코드스멜
·
Programming/기타
코드스멜코드스멜이란?직역을 해보자면 냄새나는 코드라는 의미이다.사전적 정의는 개발자가 이해하지 못하거나 잠재적인 결함이  내재되어 있어 문제를 일으킬 가능성이 있는 코드를 말하는데, 운이 좋다면 한 두군데를 고치면 에러가 해결되고 정상적으로 작동하는 경우도 있지만 보통은 리팩토링을 거쳐야 하는 경우가 많다. 코드 스멜의 종류는 굉장히 다양하다. 그중 몇가지를 소개해보고자 한다. 코드스멜의 종류중복코드 (Duplicate Code)동일한 코드구조가 여러 곳에 있는 경우를 의미한다.이 경우 동일한 코드 구조를 메서드 추출 기법등을 통해 개선이 가능하다. 긴 메서드 (Long Method)메서드의 내용이 너무 긴 경우에도 문제가 될 수 있다. 어느 부분이 문제인지 알기 어렵기 때문이다.조건문 쪼개기나 메서드 ..
컴파일러
·
Programming/기타
컴파일러컴파일러란?컴파일이란 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는 과정을 의미한다. 이러한 컴파일링을 자동으로 수행해주는 소프트웨어 혹은 장치를 컴파일러라고 한다. 컴파일링 과정은 4단계로 이루어진다.1. 전처리 과정 (Pre-processor)2. 컴파일 과정3. 어셈블리 과정4. 링킹 과정 전처리전처리 과정이란 우리가 만든 코드들 중 헤더파일이나 매크로와 같은 부분들을 소스코드로 변환해주는 사전 작업이다.이 과정에서 쓸모없는 부분들을 제거하여 최적화 또한 수행한다.주석을 제거하고, 헤더파일 내부의 코드를 삽입하고, 상단의 매크로를 실제 코드로 치환하고 적용해주는 과정을 수행한다. 컴파일그 다음 컴파일 과정에서 고급 언어 (대표적으로, C++)를 저급..
BOJ - 자작나무가 없소~ 31496
·
코딩테스트
해결방법입력되는 단어에서 특정 단어(예 : stone)가 포함되어 있는지를 파악해야 한다. 이 특정 단어는 _로 구분되어 있다면 해당하는 단어이지만(stone_axe 등등), 어떤 단어에 포함되는 경우에는 해당하지 않는다(flintstone 등등). 두번째 줄부터 아이템의 이름과 수량이 입력되는데, 이때 입력되는 문자열을 StringStream을 이용하여 입력 스트림처럼 변환해주었다.그다음으로 활용하는 것은 getline 메서드인데, 코드를 보면 ss, 즉 우리가 입력받은 아이템의 스트림을 word에 저장하는데, _가 나올때까지 읽어들인다는 의미이다.즉, stone이 우리가 찾는 이름이고, star_shape_stained_stone이 입력받은 단어라면, star, shape, stained, stone..
BOJ - 행렬 곱셈 2740
·
코딩테스트
해결방법먼저 동적으로 이차원 배열을 입력받아야 하기 때문에 이차원 벡터를 선언해줘야 한다.행렬을 입력받는것은 쉬우니 생략한다.행렬 곱을 하는 과정은 다음과 같다. 첫번째 행렬의 첫 번째 행의 숫자를 두번 째 행렬의 첫번째 열의 모든 숫자들과 곱하고 그 값을 더해준다. 행렬은 다음처럼 계산이 진행된다.따라서 우리가 해줘야 할 것은 행렬 곱의 크기인 N*K 사이즈의 배열을 만들고, 위의 그림처럼 각 배열마다 하나씩 연산을 더해주는 부분이다. 정답 코드#include #include using namespace std;int main(){ int N, M; cin >> N >> M; vector> A(N, vector(M)); for (int i = 0; i > A[i][j]; } } int C, K; ci..
BOJ - 연도 진행바 1340
·
코딩테스트
해결방법먼저 monthDay 배열을 보면, 각 월의 날수를 배열로 저장했음을 알 수 있다.나중에 map을 통해 월을 입력받으면 그 월을 숫자로 변환하여 monthDay의 숫자를 사용하는 방식으로 활용한다. YearPassed 함수는 윤년을 확인하는 함수로, 연도를 4로 나눠서 0이거나 100으로 나눠서 0은 아닌데 400으로는 0이 된다면 윤년이 되는 방식이다. monthLeft 함수는 입력된 월 이전까지의 누적일수를 구하는 함수이다. 예를 들어 May가 입력되었다면 4월까지의 일수를 구하게 된다. 여기에 만약 윤년인 경우 1일을 추가하는 방식으로 계산한다. 나머지 입력을 받는 부분과 진행도를 계산하는 것은 매우 간단하니 넘어가도록 하겠다. 정답 코드#include #include #include #in..
C#) 메서드와 매개변수
·
Programming/C C# C++
이번에 알아볼 것은 바로 메서드이다. C#에서는 메서드라 부르고 C/C++에서는 함수라고도 하는데, 특정한 동작을 수행하거나 특정 결과를 계산하는 일련의 구문 순서를 묶는 수단이다. 우리는 이 메서드들의 이름을 호출하여 사용할 수 있다.using UnityEngine;public class Test1 : MonoBehaviour{ public void Start() { int a = 10, b = 20; Debug.Log(Add(a, b)); } public int Add(int a, int b) { int c = a + b; return c; }}...이런 식으로 말이다. 이 경우 Add라고 하는 메서드를 Start메서드..