첫 강의는 프로그래밍 논리/수학 단계로 2차시까지 진행되었으며 1차시는 동영상, 2차시는 PDF 파일로 이루어져 있었다.

강의가 끝나고 나서 알았지만 2차시 PDF 내용을 1차시 동영상에서 설명해 주신다.

 

PDF 파일의 첫 페이지에 당신이... 라는 항목과 함께

Problem Soving 문제들 봤는데 어떻게 풀어야할지 감이 안온다.

프로그램 처음부터 짜려면 막막하다. 등의 내용이 있었는데 너무 공감이 되어서 뒷 내용을 더 집중해서 볼 수 있었다.

 

프로그래밍의 어려운 점이라고 하면 당연히 사용하는 프로그래밍 언어의 문법과 라이브러리 사용도 있겠지만 이것들을 사용해서 논리적으로 코드를 짜는 것 또한 어려울 것이다,

능숙해지기 위해 많은 훈련과 노력이 필요하지만 그것과 비례로 실력이 느는 경향이 있다고 한다.

 

새롭게 알게 된 내용은 논리(Logic)에도 Hard와 Soft가 있다는 것이었다.

일반적으로 우리가 문제를 풀기위해 사용하는 logic은 Soft Logic 인데 Soft Logic은 직관과 유사하다고 한다,

직관은 논리적은 느낌만을 주는 것이고 강한 착각과 정확하지 않은 단점이 있지만 익숙한 상황이 닥쳤을 때 빠르게 판단할 수 있어 사람들이 습관적으로 주로 사용한다고 한다.

 

프로그래밍에서 필요한 Logic은 Hard Logic 쪽인데 이유는 프로그래밍에서 사용되는 언어와 수많은 알고리즘들이 논리학으로부터 비롯되었고 이것을 이해하기 위해서 Hard Logic을 사용하는 것이라고 한다.

알고리즘을 이해하기 힘들어하는 이유도 우리에게 익숙한 Soft Logic을 이용해 알고리즘을 이해하려고 하기 때문이고 명제의 증명을 보지 않거나 증명을 보아도 Soft Logic으로 하기 때문이라고 한다.

 

p,q p→q 등 과거 중,고등학교 교육 과정에서 명제를 본 적이 있을 것이다.

명제식을 p와 q를 사용하여 만든다고 했을 때

p→q 에서

p가 거짓일 때 q의 참,거짓과 상관없이 해당 명제식은 항상 참이 된다.

p가 참이고 q가 거짓일 때만 명제식이 거짓이 된다.

p가 참인지 거짓인지 알 수 없을 때는 대우 명제를 이용하여 ~q→~p 를 이용하면 된다.

 

위처럼 명제의 참과 거짓을 판단하고 이를 증명하기 위해서 몇 가지의 문제들이 주어졌고 이를 푸는 것 또한 익숙하지 않아서인지 쉽지 않았다.

증명을 할 때 중요한 것은 정확한 명제식으로 표현할 수 있는 것이어야 한다고 한다. 보통 정확한 명제식까지 쓰지는 않지만 근본적으로는 바꿀 수 있는 것이여야 한다.

 

예를 들어, 

int sum(int x)

{

    if (x <= 0) return 0;

    return x + sum(x-1);

}

의 코드가 있다고 했을 때 증명을 위해서 수학적 귀납법을 사용할 수 있는데

수학적 귀납법의 기본형은 P(1)이 참일 때, P(n) → P(n+1)이 참이면 P(n)은 모든 자연수 n에 대해서 참이라는 것이다.

위의 예시에도 수학적 귀납법을 적용했을 때 증명 가능한 명제는 "sum(x)가 return 하는 값은 1+2+...+x 값과 항상 같다" 이다.

P(x) → P(x+1) 이 참이다를 증명하기 한다는 것은 "sum(x-1)이 1+2+...+x 값을 return 했을 때 → sum(x)는 1+2+...+x 값을 return한다." 를 증명하면 된다.

위의 식에서 sum(x)는 x+sum(x-1)의 값을 return 하기 때문에 결국 return 값은 x+1+2+...+(x-1) 이 된다.

즉, sum(x-1)이 1+2+...+x-1 값을 return 했을 때

sum(x)가 1+2+...+x 값을 return 했으므로 명제는 참이 된다.

 

외에도 몇 가지 증명 연습 문제들이 주어져 있었는데 이건 따로 A4용지에 써보며 증명 연습을 해보았다.

생각해보고 나중에 답안을 보면 그렇게 어려운 내용은 아니지만 이런 사고 발상 자체를 평소에 가지고 살지 않아서인지, 오랜만에 안 쓰던 이공계 파트 뇌를 쓰려니 힘든건지 모르겠다...

'CS 지식 > Computational Thinking' 카테고리의 다른 글

SWEA - 0. SWEA 입문  (0) 2023.07.03

개발자로 거듭나기 위해 SSAFY 에 지원하고 합격한 뒤 알고리즘을 내 것으로 만들기 위해서 공부를 시작했다.

비전공자에 거의 노베이스로 개발을 시작하는 것이란 쉽지 않을 것이라는 것을 다들 알 것이라고 생각한다.

 

알고리즘, CT, 코딩테스트를 어디에서 시작해야 될지 모르겠어서 삼성에서 제공하는 SWEA를 찾게 되었다.

많은 사람들이 추천하는 사이트들 중에서 대표적인 사이트이며 처음 프로그래밍을 시작하는 사람부터 programming professional 단계까지 많은 사람들이 이용하는 사이트이다.

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

처음 사이트에 들어가서 회원가입을 하면 오른쪽 상단에 '학습 추천을 위한 레벨 테스트' 라고 있는데 간단한 몇 가지 질문들로 사용자의 레벨을 파악해서 어디부터 강의를 듣고 시작하면 되는지 레벨을 알려준다.

다시 테스트 할 수도 있긴 한데 레벨 테스트를 재응시하게 되면 패널티 점수로 -100이 부여된다고 하니 처음 테스트 할 때 꼼꼼히 체크하고 객관적으로 본인의 상태에 맞춰 응시하는 것이 좋다.

필자는 프로그래밍을 많이 안해봤다는 항목을 체크했는데 Beginner(입문자) 레벨이 나와서 CT부터 들으라고 한다 ㅎ...

테스트 후 나오는 학습가이드로 이동 란을 누르면 러닝 트랙부터 진도체크, 수준별 문제 난이도까지 추천해준다, (참고로, 러닝트랙에 있는 네모 박스들 전부 링크 연결이 되어있어 클릭하면 강의 course로 연결된다.) 

 

Programming을 이제 시작한 사람부터 Coding Contest 하는 사람까지 이용하고 레벨 별로 강의와 코딩 문제가 나눠진 사이트라고 하니 공부하는데 유용할 것 같다.

'CS 지식 > Computational Thinking' 카테고리의 다른 글

SWEA - 1. 프로그래밍과 논리/ 수학  (0) 2023.07.03

+ Recent posts