C2064 항은 2개의 인수를 받아들이는 함수로 계산되지 않습니다.

평소에는 min 혹은 max를 비교할 때 ans_min과 ans를 두고 둘을 비교하며 변경하는 식으로 계산하는걸 선호하는데

https://www.acmicpc.net/problem/1459

 

1459번: 걷기

세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 (

www.acmicpc.net

자료형이 long이구,,, ans_min을 무슨 값을 디폴트 값으로 둬야하는지 감이 안잡혀서

ans_1

ans_2

ans_3 이런 식으로 값들을 구한 후 이 중에서 가장 작은 값을 구하기 위해

min(ans_1, ans_2, ans_3)을 사용했는데

'항은 2개의 인수를 받아들이는 함수로 계산되지 않습니다.' 라는 오류가 발생했다. 몬말이지...

 

template <class _Ty, class _Pr>
_NODISCARD constexpr const _Ty&(min)(const _Ty& _Left, const _Ty& _Right, _Pr _Pred) noexcept(
    noexcept(_Pred(_Right, _Left))) /* strengthened */ {
    // return smaller of _Left and _Right
    return _Pred(_Right, _Left) ? _Right : _Left;

오류를 클릭해서 min 탬플릿에 들어가보니...

_Right, _Left로 2개의 항만 비교를 한다는걸 알 수 있었다.

파이썬에서 넘어온 나에게 이것은 너무 가혹해,,,구냥 젤 작은거 출력해달라,,,

cout << min(ans_1, min(ans_2, ans_3));

일단 꼼수로 이런식으로 해결했다!

반응형

 

 

파이참에서는 이렇게 폴더로 문제를 분류해서 알고리즘을 정리하였는데

비주얼 스튜디오에서 백준 문제를 풀기위해 매번 새로운 프로젝트를 생성하고 있으니

이게...맞나...? 하는 생각이 들었다.

물어볼 사람이 없어서 그냥 그렇게 하던 중이었는데(아직 C++ 배열 만드는 법을 몰라서 몇문제 안풀었음)뭔가 무언가... 설명도 못하겠고 맞는지도 모르겠지만 프로젝를 생성할때 마다 생기는 저 외부종속성 내의 파일들이 나의 메모리를 낭비 중이라는 생각이 들어서 찾다 찾다 찾았다!

 

사진처럼 소스파일에 .cpp 파일을 생성해서 빌드하면

  • 오류 LNK2005 _main이(가) boj_start.obj에 이미 정의되어 있습니다.
  • 오류 LNK1169 여러 번 정의된 기호가 있습니다.

라는 오류가 생성되는데 이 오류를 해결하는 방법은

1. 사용하지 않는 소스 마우스 오른쪽 클릭 후 속성 접속

2. 빌드에서 제외 항목을 '예'로 변환

3. 확인 후 빌드 할 항목 빌드!

이제 두번째 파일도 빌드가 되는걸 확인할 수 있다!

반응형

들어가기 앞서

반복문으로 기본적인 C++의 문법을 접하고나니 크게 어렵지 않았습니다

기본적으로

함수(조건){코드}

의 모양을 하고 있었고, 문장의 끝에 세미콜론을 붙여줘야하고

if 문에서 python 과 다른 점이라고 한다면...

elif 를 else if라고 작성해야 한다는 점 정도...?

크게 어려울건 없군요

최종코드

#include <iostream>

int main()
{
    int a, b;
    std::cin >> a;
    std::cin >> b;

    if (a > b) {
        std::cout << a << "가" << b << "보다 큽니다";
    }
    else if (a == b) {
        std::cout << a << "와" << b << "가 같습니다";
    }
    else {
        std::cout << a << "보다" << b << "가 큽니다";
    }
}

숫자를 2개 입력받고 비교해서 어떤 수가 더 큰지 출력해주는 코드를 작성하였습니다.

기본적으로 python과 다를게 없기 때문에 크게 어렵지 않았습니다.

위에서 부터 값을 처리합니다.

 

이제 진짜로 백준 문제를 풀 수 있을 것 같아요

참고 사이트:

https://www.w3schools.com/cpp/cpp_conditions.asp'

 

C++ If ... Else

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

반응형

들어가기 앞서

바로 직전 포스트에서 입출력을 사용해봤으니 이제 백준 문제를 풀 수 있다고 생각했는데

문제를 풀려고 보니깐 반복문이랑 조건문을 사용할 줄 모르는 상태였습니다

이 얼마나 오만방자한 생각인가...!

그래서 이번엔 반복문을 간단히 연습해보는 코드를 만들어볼 생각입니다

흠 그 전에 C++ 프로젝트 생성하는 법 부터 배워야 할 것 같습니다... 임의로 whilepractice.cpp라는 파일을 생성했는데 실행을 할 수가 없군요... C++의 길을 멀고 험하다

매번 새 프로젝트를 생성할 수 밖에 없나...

 

완성코드

#include <iostream>

int main()
{
	std::cout << "while문\n";
	int i = 0;
	while (i < 5) {
		std::cout << i << "\n";
		i++;
	}
	std::cout << "for문\n";
	for (int j = 0; j < 5; j++) {
		std::cout << j << "\n";
	}
}

{} 중괄호 안에 코드가 작성 되어야 한다,

상수 값 1을 더하기 위해서 += 1 이 아니라 ++을 사용한다,

for문의 형태 외에는 크게 다른 점이 없습니다.

 

정리

참고 사이트:

https://www.w3schools.com/cpp/cpp_while_loop.asp

 

C++ While Loop

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

https://www.w3schools.com/cpp/cpp_for_loop.asp

 

C++ For Loop

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

반응형

기초중에 기초

나만 그렇게 생각하나

암튼 입출력이 기초라고 생각합니다. 저번에는 "Hello World"를 출력하였으니(내가 한건 아님)

이번엔 내가 입력받는 문자를 출력해보고

최종적으로 기본 연산을 할 수 있는 프로그램을 만들어보려고 합니다.

 

아무것도 모르니깐 일단 구글에 "C++ 입력 출력"을 검색해봅니다.

#include <iostream>

int main()
{
    int num;
    std::cin >> num;
    std::cout << num;
}

입력을 받는게 std::cin >>

출력을 하는게 std::cout <<

인가보군요

 

짜잔 3을 입력하면 3이 출력되는 프로그램을 만들었습니다!

 

#include <iostream>

int main()
{
    int a, b;
    std::cin >> a;
    std::cin >> b;

    std::cout << a + b;
}

이번엔 a + b를 더해주는 프로그램을 만들었습니다!

 

좀 더 사용자 중심적으로 입력 메세지와 출력 메세지를 만들어주고 싶습니다.

그래도 파이썬 만지던 짬이 있는데 구글링 하지 않고 문자 출력에 도전해봅니다.

따옴표안에 문자를 입력하면 '문자 상수에 문자가 너무 많습니다.' 라는 오류를 출력하더라구요

문자를 출력하기 위해서는 무조건 쌍따옴표를 이용해야하나봅니다.

뭘 하고싶었는지는 알겠죠

찾아보니 <<를 입력하면 되더라구요! 간단!

이로써 간단한 백준 문제를 풀 수 있는 수준에 도달한 것 같습니다!

2시간만에 뿌듯해졌습니다.

백준 브론즈 문제부터 다시 시작할 생각을 하니 설레는군요

 

최종코드

#include <iostream>

int main()
{
    int a, b;
    std::cout << "숫자를 입력해주세요 : ";
    std::cin >> a;
    std::cout << "숫자를 입력해주세요 : ";
    std::cin >> b;

    std::cout << a << "와" << b << "를 더하면" << a + b << "가 됩니다.";
}

이렇게 보니 딱히 한건 없습니다. 네.

백준 문제를 C++로 다시 풀어서 업로드 해 볼 생각입니다.

익숙해지면 swea 문제도 다시 풀어보려구요

참고 블로그

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lyw94k&logNo=220853743268 

 

C++ 입력 출력 (cin cout 입출력 함수)

안녕하세요 잠자머's C++ 기초 강의입니다. 이번 강의에서는 C++ 표준 입출력 함수에 대해서 글을 써보도...

blog.naver.com

https://m.blog.naver.com/lyw94k/220870571844

 

C++ 입출력 기초 보충

안녕하세요 잠자머's C++ 기초 강의 입니다. 이번 강의에서는 지난 번에 못다한 입출력에 대해서 글을 써...

blog.naver.com

 

반응형

들어가기 앞서

얼마 전 운 좋게도 가고 싶었던 기업에 서류와 1차 면접을 통과하여 코딩테스트를 치게 되었습니다.

비전공자로 CS 지식은 바닥에 알고리즘도 파이썬으로 밖에 풀지 못하는데

문제가 C#과 C++로만 출제가 되어 단 한문제도 풀지 못했고...(파이썬으로라도 의미 없이 코드를 짜보긴 했지만... 말 그대로 의미없는 코드)

필기 테스트도 하나도 모르겠기에 정보처리기사와 C++ 알고리즘 독학을 시작하고자 합니다.

말 그대로 독학이기에 부족한 점이 매우 많을텐데 혹시나 제가 이상한 방향으로 가고 있다면... 댓글 하나 남겨주시면 감사하게 생각하고 공부할 수 있을 것 같습니다

꾸벅

 

Visual Studio 2019

아마도 유니티 공부할 때 유니티와 코드 연동을 위해 깔아두었던 듯한 비주얼 스튜디오 2019

C++ 알고리즘 문제를 풀기 위해 이걸 어찌저찌 만져봐야 할텐데...

다음과 같이 새 프로젝트를 선택하여 C++ 아래에 나오는 콘솔 앱을 선택했습니다.

콘솔 앱을 선택하는게 맞는지 모르겠으나 "Hello World"를 출력한다는게 반가운 마음에 저녀석으로 선택했습니다.

뭐... 코테 연습용이니깐 상관 없지 않을까 싶기도 하구여

 

근데 사실 이 창을 찾는게 생각보다 어려웠습니다.

처음에는 C++을 선택해도 아래에 저

- 빈 프로젝트

- 콘솔 앱

- CMake 프로젝트

- Windows 데스크톱 마법사

- 공유 항목 프로젝트

저 항목들이 안나오더라구요...

 

미리 설치해야 하는 항목이 있었습니다.

 

Visual Studio 2019 installer

비주얼 스튜디오 설치 페이지에 들어가서 수정을 클릭하면 다양한...음...무언가들을...? 설치할 수 있는데

C++를 사용한 데스크톱 개발 이걸 설치해줘야 합니다.

이걸 안깔아서 프로젝트가 생성이 안된거더라구요

클릭하고 오른쪽 하단에 수정을 클릭해줍니다.

컴퓨터에 공간이 부족해서 프로그램 추가제거에서 어도비 관련 프로그램 몽땅 삭제했습니다. 안녕 잘가 언젠가 다시 찾아갈지도 모를 어도비들...

디자이너 정체성을 버린 기분이군요

 

개발 창

여기를 개발 창이라고 부르는게 맞나 모르겠지만 첫 실행에 이미 Hello World 가 기본으로 작성되어 있습니다

// ConsoleApplication1.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.
//

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}

// 프로그램 실행: <Ctrl+F5> 또는 [디버그] > [디버깅하지 않고 시작] 메뉴
// 프로그램 디버그: <F5> 키 또는 [디버그] > [디버깅 시작] 메뉴

// 시작을 위한 팁: 
//   1. [솔루션 탐색기] 창을 사용하여 파일을 추가/관리합니다.
//   2. [팀 탐색기] 창을 사용하여 소스 제어에 연결합니다.
//   3. [출력] 창을 사용하여 빌드 출력 및 기타 메시지를 확인합니다.
//   4. [오류 목록] 창을 사용하여 오류를 봅니다.
//   5. [프로젝트] > [새 항목 추가]로 이동하여 새 코드 파일을 만들거나, [프로젝트] > [기존 항목 추가]로 이동하여 기존 코드 파일을 프로젝트에 추가합니다.
//   6. 나중에 이 프로젝트를 다시 열려면 [파일] > [열기] > [프로젝트]로 이동하고 .sln 파일을 선택합니다.

예... 저 std::cout << 이거 하나도 몰라서 필기 테스트에 답 하나도 못적고 나왔었습니다.

문제 풀 당시 내 머릿속

'아니 print가 없는데 뭘 출력한다는거야...'

iostream이란걸 imclude 한다는 점에서도 C 언어랑은 다르네요 C++을 조금씩 알아가는 시간을 가져야 할 것 같습니다.

반응형

+ Recent posts