이화여자대학교 SW학부
원스탑 튜터링
에서 진행하는 코딩 테스트 대비 알고리즘 스터디알튜비튜
튜터링을 듣고 수행 내용, 새롭게 알게 된 점, 어려웠던 점, BOJ 문제 노트, 자료/사이트, 느낀점 등을 기록합니다.
말이 어렵지만 예시로 설명하면 쉽다.
만약 a
라는 변수를 입력받았는데, 이 변수가 전혀 사용되지 않고 a%10
등 연산된 값이 계속 사용된다면, a%=10
을 해서 아예 a
의 값을 바꿔버리자! 그럼 매번 a%10
의 연산을 해줄 필요가 없다.
if문
보다 while문
이 더 직관적일 때가 있다.
테스트케이스 수를 입력받고 해당 테스트케이스 수만큼 반복문을 돌릴 때 등에는 while문
이 더 보기 좋다.
cin >> t; // 테스트케이스 입력
while (t--) { // 테스트케이스 수만큼 반복문
cin >> a >> b;
a %= 10;
if (a == 0) {
cout << "10\n";
continue;
}
}
구글링을 하다가 pow
함수 앞에 std::
가 붙어있는 코드를 보고 뭔지 궁금해졌다. 알고보니 이 std
가 바로 using namespace std;
할 때의 std
였다!
표준라이브러리
에 있는 변수, 함수는 이 std
표준 네임스페이스에 포함되어 있기 때문에 pow
와 같은 표준라이브러리
함수를 사용할 때는 std::
접두어를 앞에 붙여주어야 한다는 것이다.
심지어 표준 입출력 함수인 cin
과 cout
도 원래는 사용할 때마다 이 접두어를 붙여주어야 한다.
아래와 같이 쓰면 오류가 난다.
#include <iostream>
#include <cmath>
int main() {
int a;
cin >> a;
cout << pow(a,10);
return 0;
}
따라서 오류를 없애주려면 아래와 같이 작성해주어야 한다.
#include <iostream>
#include <cmath>
int main() {
int a;
std::cin >> a;
std::cout << std::pow(a,10);
return 0;
}
하지만 매번 이렇게 접두어를 작성하는 것이 불편하기 때문에,
바로 using namespace std;
를 작성해왔던 것이다!!
그동안 아무 생각없이 썼었는데, 이제 의미를 알았다 😎
using namespace std;
를 작성해주면 아래의 코드도 이제 정상적으로 작동이 된다.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int a;
cin >> a;
cout << pow(a,10);
return 0;
}
코너케이스 문제이다 보니 확실히 오답률과 백준 코드 제출 시도율이.... 눈물이 났다 핳
예외 찾는게 정말 어려웠는데 문제 많이 풀다보면 나중에는 쉬워지겠지..!!!!!
C++
의 switch
문에서 조건으로 올 수 있는 것은 정수형 뿐이다. 단, 문자는 아스키코드로 자동 변환이 되기 때문에 문자까지는 사용이 가능하다. 그러나 문자열은 switch
문의 조건으로 사용 할 수 없다!main에 냅다 다 쓰는 습관 고치고 이제 함수화 잘하는 것 같아서 뿌듯하다💞 근데 코드를 너무 비효율적으로 쓰는듯 하...........
그리고 백준 문제를 풀다보면 인덱스 접근할 때 0번 인덱스보다 1번 인덱스부터 접근하는 것이 더 직관적인 경우가 많은데, 아직 익숙하지 않아서 무조건 0번 인덱스부터 접근한다..! 가능하면 1번 인덱스부터 접근하는 코드를 짜보자~!!