안녕하세요 이번포스터는 vscode의 tasks.json을 왜 사용할까?라는 주제로 쓰게 된 3구 개발자입니다. 제가 항상 vscode 다운로드 하면서 vscode의 tasks.json을 왜 쓸까? 라는 생각을 자주 했습니다. 그래서 저는 그 궁금증을 풀기 위해 이번 포스터를 써보도록 하겠습니다.

vscode(Visual Studio)란?

비주얼 스튜디오 코드는 마이크로소프트에서 오픈소스로 개발하고 있는 소스 코드 에디터입니다. 맥OS, 리눅스, 윈도우 등 운영체제를 지원하고 있습니다. IDE보다는 에디터에 중점을 두고 있습니다. 무료로 사용할 수 잇으며 모든 IDE들이 확장 프로그램을 지원합니다. 예를 들어서 C, C++, Python, DB 등 확장프로그램을 지원하고 있습니다.

 

본론으로 들어가겠습니다. 제가 항상 구글이라는 친구를 통해서 'vscode C&C++ 설치법, vscode python설치법을 검색하면 왜? tasks.json을 건들면서 launch.json 왜 사용할까? 라는 생각을 합니다.

 

tasks.vs.json파일과 launch.vs.json파일을 만드는 이유는 다음과 같습니다.

파일 이름

목적

tasks.vs.json

사용자 지정 빌드 명령 및 컴파일러 스위치와 임의(빌드와 관련되지 않은) 작업을 지정합니다.

launch.vs.json

디버깅을 위한 명령줄 인수를 지정합니다.

여기서 json파일은 Java Script Object Notation의 약자입니다.

 

추가적으로 tasks.vs.json파일을 설명드리겠습니다.

 

즉 tasks.json파일은 Batch File라는 뜻입니다. 즉, 복잡한 빌드, 명령어 들을 하나의 파일로 기록해서 실행이 가능합니다. tasks.json파일 안에는 빌드가 들어가 있습니다.

 

Batch File은 윈도우에서 흔히 접하는 명령 프롬프트(cmd, 윈도우 + R -> cmd -> enter)에서 많은 명령어를 한 번에 실행하기 위해서는 배치파일이 필요합니다. 만약 저는 윈도우에서 메모장과 한글 카카오톡 등을 한 꺼번에 키고 싶은데 배치파일을 이용해 한 번에 킬 수 있습니다.

 

 

이상 포스터를 마치겠습니다. 감사합니다.

안녕하세요 오늘은 깃허브의 md(mark down)에 이미지를 업로드는 하는 법을 알려드리도록 하겠습니다.

 

깃허브에 들어갑니다.

 

 

Issues -> New issue에 들어갑니다.

 

아무거나 클릭해도 상관없을 것 같네요 클릭합니다.

 

그 다음페이지에서 올리고 싶은 이미지를 드래그 해서 저기에 넣습니다. 

 

 

그러면 밑에와 같은 식으로 뜨게 됩니다.  저걸 복사해줍니다.

 

이제 코드로 들어가서 md관련한 파일을 클릭해줍니다.

 

클릭한 뒤 편집 부분을 넣어 아까 복사해놓은 것을 붙여넣고 업로드하면 됩니다. 

 

 

이상포스터를 마치겠습니다.

달팽이는 올라가고 싶다 문제를 한 번 풀어보도록 하겠습니다.

 

 

1. 높이가 V 

2. 낮에 A미터 올라갈 수 있다.

3. 밤에 잠을 자는 동안 B미터 미끄러진다. 정상에 올라간 후에는 미끄러지 지 않음(V- B)

4. 나무 막대를 모두 올라가면 , 며칠이 걸리는지?

 

 

딱히 설명드릴 게 없습니다.. 바로 소스코드 보시죠 

 

#include <iostream>

using namespace std;


int main()
{
	int A, B, V; 
	cin >> A >> B >> V; // A =2 B =  1 V = 5 

	int sum = (V - B - 1) / (A - B) + 1; 
			// (5 - 1  -1 ) = 3 /(2-1) + 1;
            // -> 3 /1 + 1 -> 3+1 -> 4 

	cout << sum << endl; //4 

	return 0;


}

 

이상포스터를 마치겠습니다. 

오늘은 2292번 문제를 풀어보겠습니다. 

 

 

1. 중앙의 방 1부터 시작함 

2. 숫자 N이 주어졌을 때 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지 

3. ex) 13까지는 3개. 58은 5개를 지난다.

 

 

문제 풀이 및 소스코드

1. 규칙을 보면 각 0층일 때는 1

2. 1층일 때는 6

3. 2층일 때는 12 

4. 3층일 때는 18 이런 식으로 쭉쭉 증가합니다.  이런 것이 제일 힌트네요?  

 

바로 소스코드를 보시겠습니다. 부족한 부분을 소스를 보면서 채워보도록 하죠.

#include <iostream>

using namespace std;

int main()
{
	int n; 
	cin >> n; // ex) 13입력 

	int sum = 2; 
	int layer = 0; // 층 
	
	if (n == 1) // n이 1이면 layer는 1
		layer = 1;
	while (n >= sum) //  13 >= 2  --- 1,  13 >= 8 
	{
		sum += 6 * (layer++); // 2 = 6 * 0(layer)(후위 layer1), 
        					// 2(sum) = 6 *1(layer)(후위2), 8(sum) = 6 * 2(layer)(g후이 = 20 
        					//  후위 연산자 이기 때문에 while에 들어갔기 때문에 layer은 3이 됩니다. 
	}
	cout << layer << endl;
    
    return 0; 
}

 

 

전위 후위는 위에 사진을 보시면 될 것 같네요. 감사합니다 

바로 문제를 보시죠

봉지는 3kg, 5kg이 있는데

상근이가 최대한 봉지를 들고 가려고 한다고 합니다.

예를 들어 18kg 배달해야 할 때 5kg = 3개와 3kg = 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다고 합니다.

 

이때 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.

 

첫째 줄에는 N이 주어진다( 3 <= N <= 5000)

 

일단 5로 나누고 안 되면 3으로 해결해야겠지요 ??

 

1. 만약 N을 5 로 나눴을 때 0이면 5 로 나눕니다.

2. 그렇지 않으면 N -3 을 나눠서 해결합니다.  만약 N이 0보다 작으면 -1을 출력하고 그렇지 않으면  count++을 이용해 하나씩 증가해줍니다.

 

소스코드는 다음과 같습니다.

 

추가적인 부분은 소스코드에서 설명드리겠습니다.

#include <iostream>

using namespace std;

int main()
{
    int N;
    cin >> N; // 18 입력 
    int count = 0;
    while(1)
    { 
    	
        if(N % 5 == 0) // 15 % 5 == 0  --------2 (20줄의 밑에 1부터 보시길) 
    {
        count =count +  N / 5;  // 1 + 15 / 5  = 4
        cout<<count<<endl; // 4 출력 
        break;
    }
    else{
        N  = N -3; // 18 - 3 = 15 ------- 1 
        if(N < 0 )
        {
            cout<<("-1")<<endl;
            break;
        }
    count++; // count = 1  
    }
    }
    return 0;
}​

이해가 안 되실 것 같아서 더 추가적으로 설명드리겠습니다.(저만 그럴 수도)

 

 

1. 18을 입력합니다.

2. 무한 while문으로 들어갑니다.

3. if문의 18 % 5==0 이 성립하지 않아 else로 들어갑니다.

4. N = N(18) - 3을 하면 N은 15가 됩니다.

5. count ++을 함으로써 count = 1이 됩니다.

6. if문으로 들어갑니다.

7. count(1) + N(15) / 5 ;  count = 4가 되겠죠 ???

8. 4를 출력합니다..

 

 

이상 포스터를 마치겠습니다.

안녕하세요 1712 백준알고리즘 문제를 풀어보도록 하겠습니다.

 

문제는 위와 같습니다.

 

매년 임대료, 재산세, 보험료, 급여 등은  = A만원(고정 비용)

재료비, 인건비  = B만원(가변 비용)

 

ex) A = 1000, B = 70이면

노트북 한 대는 총 1070만원

열 대는 1700만원입니다.또한, 손익분기점이 존재하지 않으면 -1을 출력합니다.

 

문제풀이는 다음과 같습니다.

1. 입력을 3개를 받습니다 A>>B>>C를 받고

2. sum = C(170) - B(70)를 뺍니다.  = 100

3. 만약 sum이 0보다 작으면 -1을 출력하고

4. 그렇지 않으면 (A(1000)/sum) + 1 을 출력합니다.

 

소스코드는 다음과 같습니다.

 

#include <iostream>


using namespace std;

int main()
{
    int A, B, C;
    cin >> A >> B >>C;
    int sum;

    sum = C - B; 
    if ( sum <= 0)
    {
        cout<<"-1"<<endl;
    }
    else
    {
        cout<<(A/sum)+1<<endl;

    }
    
}

 

 

안녕하세요 오늘은 백준알고리즘의 10870번을 풀어보도록 하겠습니다.

 

문제

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다.

n=17일때 까지 피보나치 수를 써보면 다음과 같다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

 

 

음,

즉 10을 입력했을 시 55가 출력이 되어야 합니다.

 

소스코드 보시죠

#include <iostream>

using namespace std;

int fib(int num)
{
    if (num == 0 ) 

    {
        return 0;
    }
    else if(num == 1)
    {
         return 1;
    }
    else
    {
        
        return fib(num - 1) + fib(num -2);
    }
    
    
    
}

int main()
{   
    int num;
    cin >> num;
    cout<<fib(num)<<endl;
    return 0;

}

 

풀이

여기서 중요하게 생각할 것이

elese { return fib(num -1 ) + fib(num - 2) } 이 부분입니다.

0이면 0

1이면 1

2 이면  =  그전 숫자와 더해서  1+1 = 2 // 이제 그전숫자와 더해야 된다.

 2 + 3 = 5

5 + 3 = 8

5 + 8 = 13

8 + 13 = 21

21 + 13 = 34

21 + 34 = 55

34 + 55 = 89

 

즉,, fib(3)를 구할 때는

fib(3-2) + fib(3-1) 인데  fib(1) + fib(2) 이다.

 

fib(5)를 구할 떄는

fib(2) + fib(3) 이다.

 

 

안녕하세요 오늘은 나머지 연산에 대해 말씀드리겠습니다. 백준 알고리즘을 참고했습니다.

 

나머지연산

1. 나머지로 출력하라는 문제가 등장할 때

2. (A+B) % M = ((A%M) + (B%M)) % M 

3. (A * B) mod M = ((A mod M) * (B mod M)) mod M

4. 나누기의 경우에는 성립하지 않음(Modular Inverse를 구해야 함)

5. 뺄셈의 경우에는 먼저 mod연산을 한 결과가 음수가 나올 수 있기 때문에 6번과 같이 해야함

6. (A - B) Mod M = ((A mod M) - (B mod M) + M) mod M

ex) (5+2) % 3 = 7 % 3 = 1 , (5 % 3 + 2 % 3) % 3 = 1, (2 + 2) % 3 = 4 % 3 = 1

 

그러면 

(6 % 3 - 5 % 3 ) % 3 = ( 0 - 2 ) % 3 = -2 % 3 = ? 

답이 무엇일까요??? -2 일까요 1 일까요 ?? 

 

 

답 : 프로그램마다 다릅니다. 자바 ,C는 -2가 나오지만 파이썬은 1이 나옵니다.

 

그러면 똑같이 나오게 할려면? 

 

 -> (a - b) % c -> (a % c - b % c + c) % c를 해주면 됩니다. 그러면 똑같은 답이 나옵니다. 

 

 

소수 

소수 : 약수가 1과 자신 밖에 없는 수

 

1.N이 소수가 되려면, 2보다 크거나 같고, 루트N 보다 작거나 같은 자연수로 나누어 떨어지면 안 된다.

이유는? N이 소수가 아니라면, N = a X b로 나타낼 수 있다(a <= b)

 

2. a > b라면 두 수를 바꿔서 항상 a <= b로 만들 수 있다.

3. 두 수 a와 b의 차이가 가장 작은 경우는 루트 N이다.

5. 즉, 루트 N까지만 검사를 해본다. 

 

 

관련 문제 : 소수찾기, 에라토스테네스의 체, 골드바흐의 추측, 팩토리얼 0의 개수 

 

 

이상 포스터를 맞치겠습니다. 

+ Recent posts