글 최종 수정일 : 2019/11/13


개요

주변 지인에게 컴퓨터활용능력 1급(속칭 컴활) 자격증 강의를 좀 추천해달라고 질문을 받았는데 사실 잘 몰라서 이번 기회에 


좀 찾아보면서 여기에 정리해보려고 한다.


계속해서 내용을 추가 할 예정.




뭐 모든 자격증이나 시험들이 다 그렇듯이, 사람마다 기본 실력이 달라서 이미 엑셀 최고수에 전산관련 지식이 빠방하다면 


그냥 시험쳐도 붙을 수도 있고, 아니면 몇달씩 고생해도 떨어질 수도 있다.



컴활은 특히나 1급은 그래도 컴퓨터 자격증 중에서 꽤 난이도가 있는 편인데다가, 각종 여러 사기업/공기업에서 행정직무로


지원할 때 서류전형 시 가산점을 쏠쏠하게 주는 편이라서, 행정직을 목표로 한다면 따 놓으면 괜찮은 자격증 중 하나이긴 하다.









정익종 컴활 강의


보통 네이버 같은 곳에 "컴활 인강"이라고 검색하면, 광고를 빠방하게 넣은 유료인강들이 많이 등장하게 되는데, 정익종 컴활강의는 유료/무료 강의가 둘 다 있다.


당연한 이야기겠지만, 유료강의가 좀 더 양도 많고 디테일하게 잡아줄 것이다. 


하지만 무료강의만 듣고도 충분히 합격하는 사람 역시 존재할 것이다. (독학으로 붙는 사람도 있는 마당에~)



따라서 이제 소개하는 강의는 무료인강을 한번 들어보고 결정해도 되지 않을까 싶다.




정익종쌤 한방 컴활이라는 곳인데 일단 다음 카페가 있다. (링크는 하단에 첨부하였다)



들어가보니 대략 위와 같이 생겼다. 다음카페로 되어있고 딱 봐도 하나의 목적으로만 이루어진 카페같은느낌!!



일단 강의 금액을 알아보자.

좌측의 수강 금액 게시판에 가 보니, 1급 금액 / 2급 금액 글 딱 2개가 있다.


컴활 1급 강좌 수강금액을 알아보기 위해서 해당 글을 눌러보았다.



대략 위와 같은 가격이 나타나는데, 왼쪽에 무료강의라고 보이는 부분이 있어서 한번 눌러 보았다.



참고로 좌측 매뉴중에서도 아래쪽으로 쭈~~욱 내리면 무료강의 게시판이 있다. 저 링크를 클릭해서 들어와도 된다.


(아래 것은 워드강의이므로 위쪽 링크를 눌러야 한다.)



무료강의 게시판들 중에서 유투브 무료강의 관련된 글도 있는데, 들어가보면 다음과 같이 되어있다.


링크를 따라가서 유투브에서도 무료 강의를 볼 수 있다.



대충 둘러보니, 무료강의는 기출문제 해설과 개념 요약 정도의 강의가 있다.


돈을 지불하고 유료강의를 듣게 되면, 챕터별로 하나 하나 설명해주는 강의가 되는 듯 하다.



정익종 컴활 카페 링크는 다음과 같다.


http://cafe.daum.net/Compcafe


유투브 강의 링크는 다음과 같다.


https://www.youtube.com/playlist?list=PLMjRiP-gsilXrTrEQL-GEC9vHoMkXPsQs

https://www.acmicpc.net/problem/2529


백준 저지 2529번 문제, 부등호 문제이다.


문제 접근

부등호에 맞는 숫자들 배열들 중 가장 큰 값과 작은 값을 구하면 된다.

0으로 시작해도 친다고 하므로, 예외처리를 덜 귀찮게 해주는 그런 옵션이라고 보면 된다.

k가 9로 값이 작아서 10의자리 수가 나올 것이므로 완전탐색 같은걸로 풀릴 것 같은 냄새가 난다.


뭔가 이런 문제는 최대한 쉽게 구현해서 풀어버리고 싶었다. (시간복잡도 최적화따위는 통과만 할 정도면 충분하다!!) 란 마인드?!



시간복잡도와 알고리즘 계획


일단 문제를 대충읽었을때는 10자리수 0000000000 ~ 9999999999 까지 생각을 했었다.

물론 이 수를 다 체크하면 TLE도 나며, 

9,999,999,999라는 수는 일단  100억 정도 되는 수 이다.


1초에 1억번 연산을한다고 보면 100초이니까 절때 안되는 계산량이다.



근데 문제를 다시 읽어보니 0부터 9까지 수가 최대 1번씩만 나온다고 한다.


그러면 최악의 경우 10!라고 볼 수 있고 이 수는, 3,628,800이다. 360만 정도인데


각각의 수를 붙여서 10자리수 스트링을 만들고, 정수를 만들어서 체크를 하려면 체크할때마다 10의 연산량, 대충 for-loop 10번을 도니까


360만에 x 10해서 3600만 정도 된다.


약간 간당간당해진다.


(실제로 요런식으로 구현하니까 생각보다 꽤 느리더라.)


그래서 여기서 더 경우의 수를 줄이도록 프루닝(Pruning : 가지치기)를 해 보면,


숫자를 만들다가 부등호 방향에 부합하지 않으면 그 쪽은 더 이상 해 볼 가치가 없으므로 그쪽은 탐색하지 않으면 된다.


부등호 기댓값으로 대충 절반정도 컷팅이 될 것 같다.


시간복잡도는 //(O(n!)//)이 그대로 나오긴 할 것 같다.




구현 코드

구현은 일반적은 dfs를 돌리면 된다.


재귀함수를 이용해서 간편하게 작성해도 되고, 중간에 프루닝 하는 부분들이 들어가야 한다.


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
vector<string> val;
string largest, smallest;
ll large, small;
bool used[11];
int value[11];
int n;
void dfs(int pos) {
	if (pos == n + 1) {
		string tmp = "";
		ll cur_val = 0;

		for (int i = 0; i <= n; i++) {
			cur_val *= 10;
			tmp += (char)value[i] + '0';
			cur_val += value[i];
		}
		if (cur_val < small) {
			small = cur_val;
			smallest = tmp;
		}

		if (cur_val > large) {
			large = cur_val;
			largest = tmp;
		}

		return;
	}

	for (int i = 0; i < 10; i++) {
		if (used[i] == false) {
			if (pos > 0) {
				if (val[pos - 1] == "<" && value[pos - 1] > i) continue;
				if (val[pos - 1] == ">" && value[pos - 1] < i) continue;
			}
			used[i] = true;
			value[pos] = i;
			dfs(pos + 1);
			
			used[i] = false;
		}
	}
}
int main() {
	small = 9876543210;
	cin >> n;
	val.resize(n);
	for (int i = 0; i < n; i++) {
		cin >> val[i];
	}
	dfs(0);
	cout << largest << endl << smallest << endl;

	return 0;
}




English Write-up

 

I saw 'Newbie CTF' in ctftime, so I joined.

 

The ctf was held by korean hacking team.

 

I prefer web hacking challenges, so at the first I tried web problem.

There was only one web challenge.

 

When I clicked link, I can see a just simple single page.

 

There is nothing interesting, although I inspect the html source code.

 

We should enter the "normalflag.iwinv.net" link, via the page shown above.

 

 

I tried to enter the "normalflag.iwinv.net" link directly, and saw that warning documents.

 

I just typed the target host domain on the gate page,

the alert modal appeared, I assume the host string is blacklisted.

 

 

I analysis the http packet with burp suite.

When I typed "naver.com" to hostname field, 

the http request is like that.

 

response code is 302 redirection with some tailing "?secret=" query parameter.

 

I just concatenate the target host with that secret parameter, and try to connect directly, 

They said, it is not intended solving direction. Whenever we enter the host, the secret parameter value changes. So, I assume the secret parameter is a kind of one time ticket with randomly created.

 

I tried more with some url fragment(#123 like that) or tailng path like host.com/blur/blur but it doesn't work.

When I concatenated port number :80 to the target hostname, it looks working!

 

 

I got the flag!!

 

 

한글 풀이

 

Newbie CTF라는게 있길래 참여해봤다.

 

한국팀 주최 대회였다.

 

웹쟁이 답게 웹 문제부터 확인을 했는데, 한문제 밖에 없어서 조금 아쉽..

 

링크로 들어가면 간단한 페이지가 하나 나온다.

 

소스보기를 봐도 별 다른건 없는듯.

 

normalflag.iwinv.net라는 링크를 들어가야하는데, 저 페이지를 통해서 들어가야 하는 듯 하다.

 

 

그냥 링크로 들어가니 저런 경고문이 뜬다.

 

그렇다고 그냥 링크를 치고 들어가려니, 

호스트가 필터링 된 듯.

 

 

원리가 어떤식인가 싶어서 버프슈트를 한번 잡아보았다.

네이버로 해서 잡아보니,

요런 요청이 가고, 

 

302응답으로 Redirection이 되는데, 뒤에 ?secret=라는 파라메터가 붙어서 온다.

 

저기있는 secret을 띠어서 flag url에 박아서 보내보니

의도된 풀이가 아니라고 한다. secret이 요청 때 마다 바뀌는 걸로 봐서, 그때그때 발급하는 티켓 같은 방식인 것으로 보인다.

 

그래서 이것 저것 시도해보다가, 포트번호 :80을 붙여서 요청을 보내보았다.

 

되는 것 같았다.

Flag를 얻었다.

+ Recent posts