[알고리즘 스터디] 구현 & 코너케이스

ᴄsᴇ ᴘᴇʙʙʟᴇ·2022년 3월 27일
0
post-thumbnail

🐣 알고리즘 스터디

이화여자대학교 SW학부 원스탑 튜터링에서 진행하는 코딩 테스트 대비 알고리즘 스터디 알튜비튜 튜터링을 듣고 수행 내용, 새롭게 알게 된 점, 어려웠던 점, BOJ 문제 노트, 자료/사이트, 느낀점 등을 기록합니다.


🍭 구현 & 코너케이스 (3월 22일)

🖤 수행 내용

  • 구현, 코너케이스에 대한 개념을 배우고, 다양한 연습문제들을 풀어본다.

🖤 새롭게 알게된 점

1. 특정 변수가 사용될 때 연산된 값만 계속 사용이 된다면 아예 그 변수를 연산된 값으로 대입해서 바꿔주자!

말이 어렵지만 예시로 설명하면 쉽다.

만약 a라는 변수를 입력받았는데, 이 변수가 전혀 사용되지 않고 a%10 등 연산된 값이 계속 사용된다면, a%=10을 해서 아예 a의 값을 바꿔버리자! 그럼 매번 a%10의 연산을 해줄 필요가 없다.

2. if문만 쓰지말고 while문도 쓰자

if문보다 while문이 더 직관적일 때가 있다.

테스트케이스 수를 입력받고 해당 테스트케이스 수만큼 반복문을 돌릴 때 등에는 while문이 더 보기 좋다.

 cin >> t; // 테스트케이스 입력 
    while (t--) { // 테스트케이스 수만큼 반복문
        cin >> a >> b; 
        a %= 10; 

        if (a == 0) {
            cout << "10\n";
            continue;
        }
    }

3. std:: 접두어

구글링을 하다가 pow함수 앞에 std::가 붙어있는 코드를 보고 뭔지 궁금해졌다. 알고보니 이 std가 바로 using namespace std;할 때의 std였다!

표준라이브러리에 있는 변수, 함수는 이 std 표준 네임스페이스에 포함되어 있기 때문에 pow와 같은 표준라이브러리 함수를 사용할 때는 std:: 접두어를 앞에 붙여주어야 한다는 것이다.

심지어 표준 입출력 함수인 cincout도 원래는 사용할 때마다 이 접두어를 붙여주어야 한다.

아래와 같이 쓰면 오류가 난다.

#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;
}

🖤 어려웠던 점

코너케이스 문제이다 보니 확실히 오답률과 백준 코드 제출 시도율이.... 눈물이 났다 핳

예외 찾는게 정말 어려웠는데 문제 많이 풀다보면 나중에는 쉬워지겠지..!!!!!

🖤 BOJ 문제 노트

#1009 분산처리

  • pow 함수의 인수, 반환값의 자료형과 주의할 점에 대한 벨로그 글을 따로 작성했다.
    👉 여기에서 확인!
    해당 코드

#11723 집합

  • remove 함수와 vectorerase 함수 비교 : 벨로그 글을 따로 작성했다!
    👉 여기에서 확인!
    해당 코드
  • C++switch문에서 조건으로 올 수 있는 것은 정수형 뿐이다. 단, 문자아스키코드로 자동 변환이 되기 때문에 문자까지는 사용이 가능하다. 그러나 문자열switch문의 조건으로 사용 할 수 없다!
    PR 링크 참고

🖤 느낀 점

main에 냅다 다 쓰는 습관 고치고 이제 함수화 잘하는 것 같아서 뿌듯하다💞 근데 코드를 너무 비효율적으로 쓰는듯 하...........

그리고 백준 문제를 풀다보면 인덱스 접근할 때 0번 인덱스보다 1번 인덱스부터 접근하는 것이 더 직관적인 경우가 많은데, 아직 익숙하지 않아서 무조건 0번 인덱스부터 접근한다..! 가능하면 1번 인덱스부터 접근하는 코드를 짜보자~!!

profile
ꜱɪɴᴄᴇ 2021.09.01

0개의 댓글