상위 폴더로 가고싶으면 cd ..
최상위 폴더 한번에 가려면 cd /
드라이브를 바꾸고 싶으면 그냥 d:, e:
디렉토리 만들려면 mkdir (원하는 디렉토리 이름)
-> 여러개면 mkdir 폴더명1,폴더명2,폴더명3 (쉼표 뒤에 공백넣어도 됨 폴더명에 포함되지않음)
- 전위연산자 : 그 줄에서 바로 적용된다.
- 후위연산자 : 그 줄이 아닌 다음 줄에서 적용된다.
그 바로 다음 줄에 뭐가 없다면, 후위연산자가 붙은 그 변수가 다시 나올 때 적용된다.
#include <iostream>
using namespace std;
int main()
{
int melon = 3;
cout << "melon is " << ++melon << endl;
//이 멜론은 컴파일하면 바로 4가 찍힌다.
cout << "melon is " << melon++ << endl;
//이 멜론은 3이 찍힌다. 이 다음 어딘가에 melon이 또 오면 걔는 4개가 찍힐 것.
return 0;
}

우하단 UTF-8 클릭 > Reopen with Encoding 클릭 > EUC-KR 찾아서 선택
VS Code가 알아서 재시작 될 것임. 이후 컴파일하면 한글도 깨지지 않는다.
하루에 수박을 한 개씩 캐던 사람이 능률이 올라 두 개씩 캔다고 가정하고 코드를 수정해 봅시다.
내 생각:
for (int i = 0; i < workingDays; i++) { // working... numOfWatermelons = 2*(numOfWatermelons++) ; }결과: 작동하지 않았다. 수박 갯수는 입력값과 같았다.
이유: 잘 모르겠다. 왤까? 🤔
-> 이거 다시 컴파일해보니 얘도 0개가 나왔다. 아래와 이유가 같은 듯 하다.😭
내 생각 2:
numOfWatermelons = (2*numOfWatermelons++) // 이건요? 이건 작동할까?결과: 폭망. 수박이 0이 되었다.
이유: i = 0부터 시작하므로 0을 곱하면 i의 상한이 몇이든 0개가 나온다.
정답:
numOfWatermelons += 2;
// nestedforloop.cpp
#include <iostream>
using namespace std;
int main()
{
int floor = 7;
int rooms = 12;
int i, j;
cout << "최대 층수: " << floor << endl;
cout << "층당 호실 수: " << rooms << endl;
for (i = 1; i < floor < i++;)
{
cout << i << "층 입니다." << endl;
for (j = 0; j < rooms < j++;)
{
cout << "호실: " << (i*100 + j) << endl;
}
}
return 0;
}
i < floor; / j < rooms; 로 세미콜론을 써야 하는데, 부등호를 써놨으니.
이거 문제 찾겠다고 디버거까지 설치한 내 멍충함이 레전드다...😩
// nestedforloop.cpp
#include <iostream>
using namespace std;
int main()
{
int floor = 7;
int rooms = 12;
int i, j;
cout << "최대 층수: " << floor << endl;
cout << "층당 호실 수: " << rooms << endl;
for (i = 1; i < floor; i++)
{
cout << i << "층 입니다." << endl;
for (j = 1; j <= rooms; j++)
{
cout << "호실: " << (i*100 + j) << endl;
if (j == rooms)
{
cout << endl;
}
}
}
return 0;
}
// nestedforloop.cpp
#include <iostream>
using namespace std;
int main()
{
int floor = 7;
int rooms = 12;
int i, j;
cout << "최대 층수: " << floor << endl;
cout << "층당 호실 수: " << rooms << endl;
for (i = 0; i < floor; i++)
{
cout << i + 1 << "층 입니다." << endl;
for (j = 0; j < rooms; j++)
{
cout << "호실: " << (i+1)*100 + (j + 1) << endl;
}
if (j == rooms)
{
cout << endl;
}
}
return 0;
}
[완성본 1]
- 등호가 있는 이유:
j=1로 시작해서, 없으면 2호부터 나온다.- if(j==rooms)가 j for문 안에 있는 이유:
j=1로 시작해서, 밖에 있으면 증감연산자 때문에 j == rooms인 호수가 13이 되므로 for문은 영원히 13호까지 가지 않아 띄어쓰기가 안 먹힌다.
[완성본 2]
- 등호가 없는 이유:
j=0으로 시작해서, 있으면 0호부터 나온다.- if(j==rooms)가 j for문 밖에 있는 이유:
j < rooms라서 등호 없어서, 안에 있으면 증감연산자 작동하지 않아 12호까지 가지 않으므로 띄어쓰기가 안 먹힌다.
강사님의 조언
코드를 절대 먼저 작성하려고 하지 말고 먼저 생각을 해보는게 정말 중요하다.
초보때 항상 하던 실수가 코드부터 작성하려고 했던 것이다.
무엇을 작성해야 할지 결정하고 코드를 작성하는 게 좋다.
별찍기도 사실은 구구단과 비슷한 메커니즘인데, 별찍기는 n번째 줄에 n개의 별이 있다.
구구단으로 생각해보면, i단에 9까지가 아니라 i까지 있는 셈 - 즉, i의 영향을 받는 구조라는 것.
이걸 생각하면 i의 범위는 상수로 정해주고(원하는 줄만큼 찍을거니까), j의 범위는 i에 따라 달라지도록 넣어주면 된다.
내 별찍기 코드:
#include <iostream>
using namespace std;
int main()
{
int i,j;
for (i = 1; i < 12; i++)
{
cout << endl;
for (j = 1; j < i; j++)
{
cout << "*";
}
}
return 0;
}
결과:
*
**
***
****
*****
******
*******
********
*********
**********
1. 나는 i < 12를 썼는데 왜 별은 10줄까지만 나왔을까?
→ i < 12로 등호가 없으니 11까지만 갈것, j < i로 또한 등호가 없으니 10까지만 갈것. 얘는 사실 내가 짠 코드대로 나온 것임.
2. 나는 그 n까지 가게 하고 싶은데?
→ 그러면 i, j의 범위에 모두 등호를 넣어주면 된다. 내 코드에서 범위에 등호를 넣고 다시 보자.
등호를 넣은 코드:
#include <iostream>
using namespace std;
int main()
{
int i,j;
for (i = 1; i <= 12; i++)
{
cout << endl;
for (j = 1; j <= i; j++)
{
cout << "*";
}
}
return 0;
}
결과:
*
** //2
***
**** //4
*****
****** //6
*******
******** //8
*********
********** //10
***********
************ //12

역시 온갖 패착과 악습(?)을 몸소 실천하는 나는 이번에도 코드부터 짜보려고 하다가 와장창창 실패해버리는 훈훈한 상황을 겪었다.