어제부로 정보처리기사 실기 시험도 끝나서 알고리즘 공부를 다시 시작했다.
다행히 실기는 가채점 결과 통과했다.. ㅎㄷㄷ 2년 전 합격률 11% 일 때 실기를 봤는데 너무 어려워서 탈락했다.
매번 50~60%대의 합격률이 나오던 시험이 갑자기 내가 응시하는 시점에 주관식으로 바뀌고 출제 기관에서 난이도 조절에 실패해서 합격률이 11%대로 떨어지다니 운도 지지리도 없다고 생각했다.
하지만 사실 제대로 공부안한 나의 탓이 크다. 10명 중 1명꼴로 합격한 사람이 있으니..
어쨌든 이번에 통과해서 정... 말 다행이다. ^^ 이번에 통과를 못했으면 다시 필기부터 봐야 했으니깐...
그리고 이번에 재시를 하면서 전공기초 공부를 다시 할 수 있어서 좋은 기회였다고 생각한다.
공부할때는 깊이는 없지만 방대한 양(신기술)의 출제범위에 고통스러웠지만 막상 합격하니 뿌듯하다.
이제 홀가분한 마음으로 알고리즘 공부를 시작했다.
10월 중순까지 약 3개월이 남았다..!
코딩 시험을 보는 회사는 한화S&C/삼성전자/신한은행ICT 등
서류에 통과할진 모르겠지만 일단 삼전은 서류 통과 잘해주니 삼전을 목표로 고고
1) 언어 공부
언어 공부는 알고리즘 문제를 풀면서 그때그때 필요한 함수를 찾아서 공부할 예정.
다른 건 몰라도 프로그래밍 언어만큼은 책보다는 인터넷 찾아가면서 그때그때 공부하는 게 좋은 것 같다.
책 보고 공부하면 항상 지쳐서 먼저 나가떨어지고, 머리에도 잘 안 들어옴
2) 기초 배경지식 공부 : 자료구조
삼성 SW 홈페이지나 유튜브 강의를 보고 하루 3강씩 진행할 예정
3) 문제 풀기 / 매일 최소 5문제씩
- 알고리즘 스터디에서 일주일에 5문제 씩 푸는 중이므로 -> 하루 1문제 : 알고리즘 스터디 문제
- 나머지 기초 2문제 + 배운 자료구조 이용 문제 중상급 2문제
* 매일 문제를 풀면서 깃헙에 1일 1 COMMIT 할 예정!
오늘은 스터디에서 낸 문제 중에 그나마 정답률 50%가 넘는 쉬운 문제부터 풀어보았다. (나에겐 절대 쉽지 않음 ㅋㅋㅋ)
//BJ 5958
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num, sum, count;
cin >> num;
string ox;
int array_sum[100] = {0, };
for (int i = 0; i < num; i++) {
sum = 0;
count = 0;
cin >> ox;
{
for (int j = 0; j < ox.length(); j++) {
if (ox.at(j) == 'O') {
count++;
sum += count;
}
if (ox.at(j) == 'X') {
count = 0;
}
}
array_sum[i] = sum;
sum = 0;
}
}
for (int i = 0; i < num; i++) {
cout << array_sum[i] << endl;
}
}
어렵게 생각할 필요가 없는데 너무 어렵게 생각했다.
1) N만큼 숫자를 받고 그만큼 FOR문을 돌려준다.
2) OX를 배열로 받을 생각을 했는데 STRING으로 받아도 상관없다.
3) STRING으로 OX를 받은 후 OX의 길이만큼 FOR문을 돌려서 O일 경우 COUNT++하고 SUM에 누적 계산
4) X일 경우, COUNT는 리셋한다.
5) 제일 밖의 FOR문이 1회 끝나면 누적된 값 SUM을 고정 배열에 순서대로 저장해둔다.
6) 처음 입력한 N만큼 FOR문이 모두 끝났으면 N만큼 누적된 각각 회차별 SUM값을 COUT해준다.
'[알고리즘] 문제풀이 연습' 카테고리의 다른 글
백준 3052 - 나머지 : [c++ STL] set 이용 (0) | 2019.07.02 |
---|---|
2) 알고리즘 : 정렬 - 버블정렬(Bubble Sort) (0) | 2019.07.01 |
1) 알고리즘 : 정렬 - 선택정렬(selection sort) (0) | 2019.07.01 |
다이나믹 프로그래밍 DP 동적계획법 (0) | 2019.06.22 |
[C++] 벡터 사용법 / 깊이우선탐색 DFS (0) | 2019.06.18 |