본문 바로가기

구현7

[BOJ] 2504번 - 괄호의 값 괄호로 이루어진 문자열을 수식으로 나타내어 값을 출력하는 문제이다. 닫는 괄호는 해당 여는 괄호가 바로 앞에 나왔을 때만 값이 적용된다는 점을 유의해야 한다 - 예외처리 안해서 처음에 틀렸다 여는 괄호가 나왔을 때 1) '(' : 스택에 push하고 tmp 변수에 곱하기 2 2) '[' : 스택에 push하고 tmp 변수에 곱하기 3 닫는 괄호가 나왔을 때 1) 스택이 비어있는 지 확인 : 비어있으면 잘못된 문자열 : 0 출력 2) 스택의 탑이 해당 여는 괄호인지 확인 : 이전 문자열이 해당 여는 괄호인지 확인 : tmp값을 ans에 더해준다 : 스택에서 해당 여는 괄호 pop : tmp값 2 or 3으로 나눈다. 3) 그 외의 경우(해당 여는 괄호가 아닌 경우) : 잘못된 문자열 : 0 출력 마지막으로.. 2022. 6. 27.
[BOJ] 1205번 - 등수 구하기 점수 리스트 내에 입력값의 순위가 몇위인지 출력하는 문제이다. case를 나눠보면 1) 점수 리스트 크기보다 순위가 낮아서 랭크인 하지 못하는 경우 -1 출력 2) 동점자가 많아서 랭크인 하지 못하는 경우 -1 출력 3) 그외에는 입력값의 순위 정상 출력 다음과 같이 경우를 나누어 구현하면 된다. #include #include #include #include #include using namespace std; int N, score, P; int score_rank = 1, score_p = 1; int num[50]; int main() { cin >> N >> score >> P; for (int i = 0; i > num[i]; if (num[i] > score) .. 2022. 6. 23.
[BOJ] 1159번 - 농구 경기 문자열을 입력받아 가장 앞글자의 빈도수를 계산하는 문제이다. 카운팅 배열을 사용하여 각 알파벳에서 'a'를 빼주어 인덱스마다 알파벳을 카운팅해준다. #include #include #include using namespace std; string name, ans; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; char c; int count[26] = { 0, }; cin >> N; for (int i = 0; i > name; count[name[0] - 'a']++; } for (int i = 0; i = 5) ans +.. 2022. 6. 17.
[BOJ] 10988번 - 팰린드롬인지 확인하기 주어진 문자열이 팰린드롬인지 확인하는 문제이다. 팰린드롬은 앞으로 읽을 때와 거꾸로 읽을 때 같은 단어를 말한다. C++ STL의 reverse함수를 사용하여 비교한다. #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string s, tmp; cin >> s; tmp = s; reverse(tmp.begin(), tmp.end()); if (tmp == s) cout 2022. 6. 17.
[BOJ] 2979번 - 트럭 주차 시간별 차량의 수에 따라 달라지는 주차요금을 계산하는 문제이다. 차량이 주차된 시간만큼 카운팅 배열의 인덱스 값에 더해주고 경우에 따라 달라지는 요금을 곱하여 총 합을 구한다. #include using namespace std; int A, B, C, s, f, ans; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int count[101] = { 0, }; cin >> A >> B >> C; for (int i = 0; i > s >> f; for (int j = s; j < f; j++) count[j]++; } for (int i = 1; i < 100; i++) { if .. 2022. 6. 17.
[BOJ] 10808번 - 알파벳 개수 단어내의 알파벳 갯수를 카운팅하는 문제이다. 카운팅 배열을 사용하여 각 알파벳에서 'a'를 빼주어 인덱스마다 알파벳을 카운팅 해준다. #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int count[26] = { 0, }; string str; cin >> str; for (char a : str) // 문자열 내 문자마다 for문 실행 count[a - 'a']++; for (int i = 0; i < 26; i++) cout 2022. 6. 17.
[BOJ] 2740번 - 행렬 곱셈 단순 수학, 구현 문제이다. 행렬의 곱셈을 코드화할 수 있다면 쉽게 풀 수 있다. res[i][j] += A[i][k] * B[k][j]; 이 부분이 행렬의 곱셈을 구현한 부분이다. #include #include #include using namespace std; int N, M, K; int A[101][101]; int B[101][101]; int res[101][101]; int main() { cin.tie(0); ios_base::sync_with_stdio(false); cin >> N >> M; for (int i = 0; i > A[i][j]; } cin >> M >> K; for (int i = 0; i.. 2022. 6. 14.