백준 / 괄호 / C++
·
coding test - C++
*문제 출처는 백준에 있습니다.문제 제목: 스택문제 사이트: https://www.acmicpc.net/problem/9012괄호 성공다국어 시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초128 MB2687111310039359547.305%문제괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenat..
백준 / 스택 / C++
·
coding test - C++/백준
*문제 출처는 백준에 있습니다.문제 제목: 스택문제 사이트: https://www.acmicpc.net/status?user_id=sy9216&problem_id=10828&from_mine=1스택 성공시간 제한메모리 제한제출정답맞힌 사람정답 비율0.5 초 (추가 시간 없음)256 MB3177371228058871539.139%문제정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 다섯 가지이다.push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아..
C 문자열이 동일한지 비교 (포인터) / C++ strcmp(a, b) 에서 a == b 이면 0 을 반환함 - 아스키코드 차이로 같은 문자열인지 확인하기
·
coding test - C++
파이썬은 엄청 쉬웠는데.. 왜 C로 하필 이런 코딩을 하게됐을까..코딩 많이 될거야..스트레스 많이 받을거야.. 우선 스택 들어 가기 전에 C에서의 문자열 비교 #include int strCompare(const char *a, const char *b) { while (*a && *a == *b) { a++, b++; } return *a - *b;}int main() { char command[100]; scanf("%s", &command); printf("%d", strCompare(command, "push")); } -- 함수 분석 --int strCompare(const char *a, const char *b){ while (*a && *a == *b) a++, b+..
백준 / 달팽이 / C++
·
coding test - C++/백준
*문제 출처는 백준에 있습니다.문제 제목: 달팽이문제 사이트: https://www.acmicpc.net/problem/1913나의 풀이(처음 풀이 -> 0,0 에서 시작)#include #define MAX 1100int N, FIND_NUM;int fr, fc; // FIND NUM 좌표int MAP[MAX][MAX] = { 0 };void input() { scanf("%d", &N); scanf("%d", &FIND_NUM);}void printMAP() { for (int r = 0; r 우 -> 상 -> 좌int dx[4] = {0,1,0,-1}; int dy[4] = {1,0,-1,0};void makeSnail() { // 0,0 에서 시작해서 크기가 N과 같아지거나 MAP[r][c] 가..
백준 / 배열 돌리기 6 - 부분 배열 반전, 회전 / C++
·
coding test - C++/백준
*문제 출처는 백준에 있습니다.문제 제목: 배열 돌리기 6문제 사이트: https://www.acmicpc.net/problem/20327* 풀다가 전역 변수 관리 잘못해서 출력이 안나오기도 했었다.. 꼭 전역변수 / 지역변수 구분해서 잘 코딩하기이 문제는 상하좌우 반전, 회전은 기본으로 풀 수 있을때 푸는게 좋다. 나의 풀이#include#define MAX 200// 부분 배열 내에서의 연산#define FLIP_UPDOWN (1)#define FLIP_LEFTRIGHT (2)#define ROTATE_RIGHT (3)#define ROTATE_LEFT (4)// 부분 배열 자체를 한 칸으로 #define SPLIT_FLIP_UPDOWN (5)#define SPLIT_FLIP_LEFTRIGHT (6..
백준 / 배열 돌리기 3 - 상하반전, 회전, 그룹 회전 / C++
·
coding test - C++/백준
*문제 출처는 백준에 있습니다.문제 제목: 배열 돌리기 3문제 사이트: https://www.acmicpc.net/problem/16935 배열 돌리기 3시간 제한메모리 제한제출정답맞힌 사람정답 비율2 초512 MB136167055518550.873%문제크기가 N×M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다.1번 연산은 배열을 상하 반전시키는 연산이다.1 6 2 9 8 4 → 4 2 9 3 1 87 2 6 9 8 2 → 9 2 3 6 1 51 8 3 4 2 9 → 7 4 6 2 3 17 4 6 2 3 1 → 1 8 3 4 2 99 2 3 6 1 5 → 7 2 6 9 8 24 2 9 3 1 8 → 1 6 2 9 8 4 2번 연산은 배열을 좌우 반전시..
백준 / 배열 돌리기 2 / C++
·
coding test - C++/백준
*문제 출처는 백준에 있습니다.문제 제목: 배열 돌리기 2문제 사이트: https://www.acmicpc.net/problem/16927 배열돌리기 1 이랑 동일한 문제임..!! min(N,M) mod 2 = 0 -> 둘 중 하나는 무조건 짝수인데, 그 중 작은 값이 반드시 짝수임-> 짝수가 더 큰 경우는 존재할 수 없다.나의 풀이#include #define MAX (300 + 30)int MAP[MAX][MAX];int temp[MAX][MAX];int N, M, R;struct RC{ int r; int c;};RC arr[MAX * MAX];void input() { scanf("%d %d %d", &N, &M, &R); for (int r = 0; r = sc; c--) { arr[index..
백준 / 배열 돌리기 1 / C++
·
coding test - C++/백준
*문제 출처는 백준에 있습니다.문제 제목: 배열 돌리기 1문제 사이트: https://www.acmicpc.net/problem/16926 이 문제는 배열을 돌려야한다.그런데 제일 위에칸부터 하나를 pop하고 뭐 이어붙이는 식의 방식은 최대 입출력 제한 300(N) x300 (M) x 1000(R) 을 연산 하게 되어 시간초과를 초래할 수 있다. 이렇게 된 거는 그냥 arr로 처리하면 금방할 수 있따. 나의 풀이#include #define MAX (300 + 30)int N, M, R;int map[MAX][MAX];int temp[MAX][MAX];struct RC { int r; int c;};RC arr[MAX * MAX];void input() { scanf("%d %d %d", &N,..
백준 / 배열 돌리기 / C++
·
coding test - C++/백준
*문제 출처는 백준에 있습니다.문제 제목: 배열 돌리기문제 사이트: https://www.acmicpc.net/problem/17276 나의 풀이 기본 입력 구성MAX 할당은 가장 큰 값의 10% 정도로 메모리를 구성해주면 된다.#include #define MAX (500 + 50)int T, N, D;int MAP[MAX][MAX]; // 입력 받을 맵int TEMP[MAX][MAX]; // 복사할 맵void input() { scanf("%d", &N); scanf("%d", &D); for (int r = 0; r 여기서 문제를 잘 확인하고, 시계방향으로 회전할지 / 반시계방향으로 회전할지에 대한 로직을 세운다 만약 반시계방향으로 90도 회전 한다는 것은 -> 시계방향으로 270도 회전한다는 ..
[C++] 배열 (1차원, 2차원 배열 초기화)
·
coding test - C++
배열 복사와 초기화의 원리 C에서 배열은 일반 변수와 전혀 다르게 동작한다.특히 함수 전달 방식(값 vs 참조), 초기화 방식(전역 vs 지역), 그리고 복사 개념을 정확히 이해하지 못하면 의도치 않은 버그가 쉽게 발생한다.이 글에서는 다음을 단계적으로 정리한다.1차원 배열 복사배열을 함수에 넘길 때의 원리(참조 전달)2차원 배열 복사배열 초기화 규칙C와 C++의 지역 배열 초기화 차이디버깅 출력 팁 (%2d)1. 1차원 배열 복사코드#include #define MAX (5 + 3)int a[MAX];void copyArr(int copy[MAX], int original[MAX]){ for (int i = 0; i 실행 결과value1 = 5 / value2 = 3a : 0 1 2 3 4b : ..
[C++] 기본 문법 (매크로, 구조체, 연산)
·
coding test - C++/기본기문제
* 대충 1억번의 연산은 1초정도 걸린다.* 매크로 함수에서는 사칙연산을 고려해서 각 변수에 괄호를 꼭 씌워주자.* Left Shift 연산자는 2의 거듭 제곱을 구할때 편함 ( 1>>i )* 정수에 not(!) 연산자를 사용하는 경우에는, - 숫자가 0인경우 -> 1을 반환한다.- 숫자가 1이 아닌 경우 -> 0을 반환한다. 예시: int a = 0;int b = 1;int c = 10; printf("%d",!a); // 1 출력printf("%d",!b); // 0 출력printf("%d",!c); // 0 출력1) typedef(ll), 매크로, 상수, 오버플로우, min/max 갱신코드#include // 타입 재정의typedef long long ll;// 매크로 함수 (괄호 중요)#de..
[C++] 주요 알고리즘 정리 (BFS, DFS, 다익스트라...)
·
coding test - C++/기본기문제
시간이 없는 관계로 지삐띠니야의 도움을 빌려 정리햇습니다0) 공통: 방향 배열(격자 탐색)int dx4[4] = {-1, 0, 1, 0}; // 상 우 하 좌int dy4[4] = {0, 1, 0, -1};int dx8[8] = {-1,-1,-1, 0,0, 1,1,1}; // 8방int dy8[8] = {-1, 0, 1,-1,1,-1,0,1};1) BFS (그래프/격자)1-1) 그래프 BFS (인접리스트)#include #include using namespace std;// n: 정점 수 (0..n-1), adj: 인접리스트, start: 시작 정점vector bfs_graph(int n, const vector>& adj, int start) { vector dist(n, -1); queu..