[알고리즘] 문제풀이 연습

[알고리즘 공부 계획] + 백준 5598 - OX퀴즈 풀이

ddgoori 2019. 7. 1. 17:04

어제부로 정보처리기사 실기 시험도 끝나서 알고리즘 공부를 다시 시작했다.

다행히 실기는 가채점 결과 통과했다.. ㅎㄷㄷ 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해준다.