본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다

코딩테스트14

[자료구조] 백준 14425번(파이썬) : 문자열 집합 #include #include int main() { int origin, compare; scanf("%d %d", &origin, &compare); // 입력한 개수에 맞게 메모리 할당 char originalWords[origin][100]; char compareWords[compare][100]; // 원본 단어 입력 for (int i = 0; i < origin; i++) { scanf("%s", originalWords[i]); } // 비교 단어 입력 for (int i = 0; i < compare; i++) { scanf("%s", compareWords[i]); } // 완전히 같은 단어 개수 계산 int same = 0; for (int i = 0; i < origin; i++.. 2023. 5. 31.
[스택] 백준 2493번 (C언어) : 탑 #include int tower[500001]; int result[500001]; int main() { int num; tower[0] = 100000001; scanf("%d", &num); for (int i = 1; i = tower[i]) { printf("%d ", j); result[i] = j; break; } else j = result[j]; } } return 0; } 위 문제는 스택을 써서 풀어야 한다고 했지만, 일단 스택을 생각하지 않고 먼저 c언어로 구현해 보았습니다. 일단 탑의 높이를 받아줄 배열 하나와 최종 값에 대한 배열 하나를 생성합니다. for문을 살펴보면 일단 현재 인덱스를 가리키는 i와 이전의 인덱스를 가리키는 j가 있습니다. 만약 이전의 탑이 이후의 탑보다 높다.. 2023. 5. 19.
[스택] 백준 2504번 (파이썬) : 괄호의 값 문제를 요약하자면 소괄호와 대괄호에 따라 연산을 다르게 처리한다는 것이다. 코드로 구현하면 다음과 같다. b = list(input()) s = [] answer = 0 num = 1 for i in range(len(b)): if b[i] == "(": s.append(b[i]) num *= 2 elif b[i] == "[": s.append(b[i]) num *= 3 elif b[i] == ")": if not s or s[-1] == "[": answer = 0 break if b[i-1] == "(": answer += num s.pop() num //= 2 else: if not s or s[-1] == "(": answer = 0 break if b[i-1] == "[": answer += n.. 2023. 5. 19.
[스택] 백준 10799번 (C언어) : 쇠 막대기 #define _CRT_SECURE_NO_WARNINGS #include #include #include #define N 100000 char str[N]; int main(void) { int count = 0, sum = 0; scanf("%s", str); for (int i = 0; i < strlen(str); i++) { if (str[i] == '(') { count++; } else if(str[i] == ')') { count--; if (str[i - 1] != str[i]) sum += count; if (str[i] == str[i + 1]) sum += 1; } } printf("%d", sum); } main함수 안에 있는 for문을 살펴보면 일단 열리는 괄호 ( 가 나오면 ).. 2023. 5. 18.