다른 사람들의 코드를 보면서 얻은게 많았던 문제

#include <stdio.h>
#include <iostream>
#include <cstring>
#include <fstream>
#include <string>
#include <vector>

using namespace std;

int main()
{
	int T;
	scanf("%d ", &T);

	vector<string> result;
	char temp;
	int leftCnt = 0, rightCnt = 0;

	for (int i = 0; i < T; )
	{
		temp = getchar();

		if (temp == '(') ++leftCnt;
		else if (temp == ')') ++rightCnt;
		
		if (leftCnt < rightCnt)
		{
			string line;
			getline(std::cin, line);
			result.push_back("NO");
			leftCnt = 0;
			rightCnt = 0;
			++i;
		}
		else if (temp == '\n')
		{
			if (leftCnt == rightCnt)
				result.push_back("YES");
			else
				result.push_back("NO");
			leftCnt = 0;
			rightCnt = 0;
			++i;
		}
	}

	for (const auto & data : result)
	{
		cout << data<<'\n';
	}

	return 0;
}

밑은 감명받은 코드ㅋㅋ

더보기
#include<cstdio>
int n;
char s[51];
int main() {
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		scanf("%s", s);
		int c = 0;
		for (int j = 0; s[j] && c >= 0; j++) s[j] == '(' ? c++ : c--;
		puts(c ? "NO" : "YES");
	}
	return 0;
}

||풀면서 느낀 것

  • 무조건 설계를 잘 세워두자

설계하다가 아 이거 코드로 바로 풀 수 있겠다 라는 생각이 들어서 중간에 코드쓰면서 나머지를 생각했는데

전혀 아니였다 ^~^

깝치지 말고 끝까지 꼼꼼하게 설계를 해두자

 


||새로 알게 된것

  • 문자열의 끝이 반복문의 종료 조건이 될 수 있다

문자열의 끝은 Null, 즉 0이라 당연히 조건이 될 수 있는데

이렇게 응용 할 생각을 못했어서 이번에 다른 사람들의 코드를 보면서 깨달았다.

char test[50];

//for문에 적용
for(int i = 0; test[i]; ++i) { }

//while문에 적용
int i = 0;
while(test[i]) {}

 

보다 쉽게 문자열의 끝까지 반복문을 돌릴 수 있게 되었다! 정말 개꿀

 

  • stl의 Stack이 비었을 때 pop이나 top을 사용하면 에러가 난다

이건 그냥 질문게시판을 보다가 알아두면 좋을것 같아서 적어본다.

 

  • scanf에서 %s뒤에 공백문자를 넣으면 화이트스페이스가 비워진다.

이건 항상 이렇게 하면 비워지지 않을까? 생각했던건데

이번에 실험해보면서 잘 작동 되는걸 확인했다.

char test[50];
scanf("%s ",test); //%s뒤에 공백이 있다는게 중요
puts(test);
scanf("%s",test);
puts(test);


//input
AA BB

//output
AA
BB

 

  • 백준 관련

이번에 여러가지 해보면서 확실해졌는데

  1. 모든 input이 끝나지 않아도 중간 중간 output이 정답대로 나와도 정답처리가 된다.
  2. rewind, fflush는 백준에서 지양하더라

'코딩 테스트 > 알고리즘 풀이' 카테고리의 다른 글

[백준 - 1260] DFS와 BFS  (0) 2022.08.02
[백준 - 1202] 보석 도둑  (0) 2022.08.01
[백준 - 9093] 단어 뒤집기  (0) 2022.07.31
[백준 - 1080] 행렬  (0) 2022.07.30
[백준 - 1715] 카드 정렬하기  (0) 2022.07.28

+ Recent posts