반응형

안녕하세요 코딩교육자 Henry입니다.

 

오늘은 제가 2021년도 정보처리기사 실기 2회차를 보았던 내용을 적으려고 합니다.

 

정보처리기사 필기는 작년에 따놓았는데, 계속 실기 공부를 못하고 있다가,

이렇게 기회가 되어서 실기 시험을 보게 되었습니다.

 

사실 공부를 많이 하지 못했습니다...

 

회사에서 시간을 많이 보내고, 따로 공부하려고 하면, 체력적으로 받쳐주지 못해..

결국 토요일 시험인데, 금요일 밤에 잠깐 보고 시험을 보러 갔습니다..ㅠㅠ

 

공부는 제가 작년에 실기시험 대비해서 준비했던 내용을 한번 싹 훓고 가는 정도였습니다..ㅜㅜㅋㅋㅋㅋㅋ

아래 링크가 바로 그 내용입니다.!!

https://datacodingschool.tistory.com/132

 

내가 보려고 만드는 정보처리기사 단답형 예상문제

2. 데이터 입출력 구현 Q. 테이블의 제약조건 설계에서 참조 무결성 제약조건의 3가지를 적으시오 정답: 제한, 연쇄, 널값 Q. 반정규화란 무엇인가요? 정답: 조인이 많은 경우 성능향상을 위해서

datacodingschool.tistory.com

 

시험장에는 작년에 풀었던 2020 정보처리기사 실기 책을 짧게 보았습니다.

 

시험에는 다양한 문제들이 나왔습니다.

근데 특히 Java, Python, C++, C 같은 언어로 출력값을 예측하는 문제가 거의 4문제로 많이 나온것 같고,

SQL 빈칸 채우기 문제도 나왔습니다.

 

정말 실기이기 때문에, 실제로 사용할 수 있는 내용들이 문제에 출제되는 느낌이었습니다.

프로그래밍이라던지, SQL 이라던지 그렇습니다!ㅎㅎ

 

실기 준비하시는 분들은 프로그래밍이랑 SQL DDL, DML 정보는 숙지하고 가셔야 

좋은 결과를 받으실 것 같습니다!!

 

수험장을 나오면서 시험볼때 계속 내렸던 비가 그쳤습니다!

상쾌한 마음으로 학교를 나왔는데,

결과는 어떻게 되었을지 궁금하네요..

 

사실 블로그에 정보처리기사 공부하는 과정을 올리고 싶었는데,

바쁜 시간이 허락해주지 않았습니다..ㅠㅠ!

 

하지만 좋은 결과가 있길 바라며,

오늘도 열심히 성장하는 Henry가 되어야겠다는 다짐을 합니다!ㅎㅎ

 

 

그리고 다가온 정보처리기사 시험!!

준비한 문제집을 다시 보면서 차근차근 되돌아보았습니다.

그 결과!!

 

합격!! 하였습니다.

 

급하게 준비한 시험이어서 걱정을 많이 했었는데,

공부한 부분에서 많이 나와서 다행히 합격할 수 있었습니다.

 

정보처리기사 실기 시험은 수제비 문제집으로 공부하였고, 상단에 보시면 제가 공부하면서 뽑아놓은 

기출문제들이 있으니 참고하시면 좋을 것 같습니다!!ㅎㅎ

 

아래는 제가 사용했던 정보처리기사 문제집입니다!

쿠팡파트너스를 해보려고 해서, 아래에 링크를 타고 구매하시면 저에게도 일정 부분 도움이 될 것 같습니다!

 

다들 공부 열심히 하셔서 좋은 결과 있으시길 바라겠습니다!

 

 

2021 수제비 정보처리기사 실기 1 + 2 세트 2020년 기출 문제 수록

COUPANG

www.coupang.com

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형
반응형

 

 

안녕하세요

알고리즘을 좋아하는 개발자 Henry입니다!ㅎㅎ

 

최근에 회사를 다니면서 바쁘고 피곤해서 코딩 문제를 못풀었었는데,

다시 조금씩 풀어보려고 키보드를 잡았습니다!

 

오늘은 프로그래머스에서 동적계획법을 사용해서 푸는 문제를 풀어보았습니다.

N으로 표현이라는 문제를 처음 접했을 때,

아래와 같이 풀었습니다.

 

def solution(N, number):
    answer = 0
    li = []
    dynamic(N,N,number, li, 1)
    return min(li) if len(li) != 0 else -1

def dynamic(N, cur, number, li, cnt):
    if cnt > 8:
        return
    if number == cur:
        li.append(cnt)
        return
    dynamic(N, int(str(cur)+str(N)), number, li, cnt+1) # N->N
    dynamic(N, cur+N, number, li, cnt+1) # N -> +
    dynamic(N, cur-N, number, li, cnt+1) # N -> -
    dynamic(N, cur//N, number, li, cnt+1) # N -> // 소수점은 무시하기 때문에
    dynamic(N, cur*N, number, li, cnt+1) # N -> *

 

 

그러나 위의 코드는 정확도 55점을 받았습니다.

 

알고보니 사칙연산에서 곱셈과 나눗셈을 먼저 계산을 해주는 로직이 빠져 있었습니다.

 

동적계획법을 사용해서 문제를 풀지 않아서 발생하는 이유였습니다.

여기서 잠깐!동적 계획법이란??>> 동적 계획법은 문제를 풀 때 하나의 문제를 여러 하위 문제로 나누어 풀고, 그것들을 결합해서 최종 목적에 도달하는 방식의 알고리즘입니다.

 

찾아보니까 아래의 링크에서 자세하게 설명해주고 있습니다.https://velog.io/@chelsea/1-%EB%8F%99%EC%A0%81-%EA%B3%84%ED%9A%8D%EB%B2%95Dynamic-Programming-DP

 

[자료구조와 알고리즘] 동적 계획법(Dynamic Programming, DP)

동적 계획법(Dynamic Programming) - 컴퓨터 공학 스터디 W1 자료구조와 알고리즘 내용에 앞서 학교에서 컴퓨터 공학 이론 스터디를 진행하고 있습니다. 매주 발표하는 내용을 시리즈로 업로드할 예정

velog.io

 

 

사실 동적계획법에 대해서 정확한 개념을 모르고 있었다.

 

큰 문제를 작게 쪼개어 작은 문제들을 풀어나가는 느낌으로만 이해하고 있었는데,위의 글을 통해서 동일한 작은 문제를 한번씩만 계산하는 원리가 숨어있다는 것을 알게 되었다.

 

그러나 바로 코드에 적용하는 것은 쉽지 않았다.그래서 몇번 고민한 결과 결국 구글링의 도움을 받아 아래 사이트와 동일한 방법으로 문제를 풀게 되었다.

 

https://gurumee92.tistory.com/164

 

프로그래머스 문제 풀이 N으로 표현

이 문제는 이시윤 강사님의 프로그래머스 강좌 "파이썬을 무기로, 코딩테스트 광탈을 면하자!"를 보고 정리한 내용입니다. 문제 URL N으로 표현 Contents 문제 지문 파악하기 강사님의 알고리즘 풀

gurumee92.tistory.com

def solution(N, number):
    answer = -1
    if number == N:
        return 1
    
    _li = [set() for i in range(8)]
    for i in range(len(_li)):
        _li[i].add(int(str(N)*(i+1)))
        
    for i in range(1,8):
        for j in range(i):
            for op1 in _li[j]:
                for op2 in _li[i-j-1]:
                    _li[i].add(op1+op2)
                    _li[i].add(op1-op2)
                    _li[i].add(op1*op2)
                    if op2 != 0:
                        _li[i].add(op1//op2)
        if number in _li[i]:
            answer = i+1
            break
    
    return answer

 

 

이번 기회를 통해서 동적계획법에 대해서 조금 더 알게 된 것 같아서 감사했다.

앞으로도 꾸준히 코딩 문제를 풀고 싶고, 알고리즘 공부를 하고 싶다.

 

 

반응형
반응형

주석이 너무 길지도, 너무 짧지도 않은 코드이다.

그러나 주석이 아예 필요하지 않은 가독성이 좋은 코드가 가장 좋은 코드이다.

 

- 생활코딩 이고잉님 - 

 

sublime text를 처음 써봤는데, 간단하고 좋은 툴인거 같다.

 

자바스크립트 강의를 듣다가 끄적.

 

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<script type="text/javascript">
	// 아래는 실습용 코드입니다.
	alert(1+2); // 결과 : 3
</script>
</body>
</html>

 

 

반응형
반응형

써먹기 위해 기록하는 글!!

 

 

mac에서 react native 개발환경 구축하는 방법!

 

 

1. homebrew 설치한다.

homebrew는 맥에서 필요한 패키지를 설치하고 관리하는 맥용 패키지 관리자입니다.

>> brew --version 확인해서 없으면 다운로드 받는다.

 

 

2. node.js 설치한다.

React native는 javascript이므로 Javascript 런타임인 node js 필요하다.

>> brew install node

 

3. watchman 설치한다.

특정 폴더나 파일에 변화가 생기는 것을 감지하기 위해 설치한다. 

react-native에서는 소스코드의 추가, 변화가 일어나면 다시 빌드하기 위해 필요하다.

>> brew install watchman

 

4. react native CLI 설치한다.

>> npm install -g react-native cli

 

5. xcode 설치한다.

react-native로 ios 앱을 만들기 위해서 필요하다.

 

6. cocoapods 설치한다.

ios의 의존성 관리자이다.

>> sudo gem install cocoapods

 

7. jdk설치한다.

android 앱 만들기 위해서 필요하다.

>> brew tap AdoptOpenJDK/openjdk

 

8. android studio 설치한다.

react-native로 안드로이드 앱을 개발하려면 안드로이드 스튜디오를 설치해야 합니다. 아래에 링크를 통해 안드로이드 스튜디오 사이트로 이동하고, 설치 파일을 다운로드 합니다.

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다~

 

오늘은 파이썬을 통해 서버와 클라이언트를 만들고 통신하는 방법을 공부했습니다.

 

 

최근들어 파이썬 클린코드 라는 책을 읽으면서 

파이썬스러운(Pythonic) 코드를 짜는 것이 얼마나 중요한지에 대해서 깨닫는 중입니다.

 

 

우선 통신이란!

 

서버 - 클라이언트 사이에 데이터를 오고 가는 것을 의미합니다.

 

최소 2개의 Peer가 있어야 하는 것이지요.

 

 

파이썬에서는 socket이라는 패키지를 사용합니다.

 

서버측 플로우

 

1. 먼저 소켓 객체를 생성합니다.

 

2. bind라는 함수를 통해 생성한 소켓을 특정 호스트와 포트에 연결합니다.(길을 만들어주는 느낌으로 이해하면 됩니다.)

 

3. listen이라는 함수를 통해 클라이언트의 접속을 허용시켜줍니다

 

4. accept 함수를 통해 클라이언트의 요청이 올 때까지 기다립니다. (accept는 클라이언트 소켓과 주소를 반환해줍니다.)

>> client_socket, addr = server_socket.accept()= sㅇerver_socket.accept()

 

5. 반환된 클라이언트 소켓(client_socket)의 recv라는 함수를 통해 데이터를 받아옵니다.

 

 

클라이언트측 플로우

 

1. 먼저 소켓 객체를 생성합니다.

 

2. connect 함수를 통해 서버측 소켓과 연결합니다.

 

3. sendall 함수를 통해 메세지를 전송합니다.

 

 

위의 내용을 하나의 그림으로 정리하면 아래와 같습니다.

 

 

아래 블로그를 참고하며 공부하였습니다.

webnautes.tistory.com/1381

 

파이썬 소켓 프로그래밍 - 클라이언트 / 서버 예제

파이썬에서 소켓을 사용한 TCP 서버/클라이언트 예제에 대해 다룹니다. 클라이언트가 서버에 접속하여 통신이 시작되는 방식입니다.  1. TCP 소켓 2. 간단한 에코 서버, 클라이언트 예제 3. 쓰레드

webnautes.tistory.com

 

 

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다.

 

요즘에 장고를 공부하면서 개발을 하고 있습니다.

 

이때 아래와 같은 상황을 맞을 때 어떻게 해결하는지 기록하려고 합니다.

Error: That port is already in use 

 

상황을 보니

이미 포트가 열려있어 새로 열 수 없는 상황입니다.

 

아래의 명령어로 port 8000와 관련된 프로세스를 모두 죽이고 다시 시작하면 됩니다.

 

sudo lsof -t -i tcp:8000 | xargs kill -9

반응형
반응형

안녕하세요

알로리즘을 공부하는 개발자 Henry입니다~

 

오늘은 pip에서 패키지를 설치하려고 할 때,

패키지 설치가 안되는 현상을 해결하는 방법을 기록하려고 합니다~!!ㅎㅎ

 

 

1. 일단 저는 pip 명령어로 mysqlclient를 설치하고 싶었습니다.

>> pip3 install mysqlclient

 

그랬더니 아래과 같은 에러가 발생하였습니다.

 

OSError: mysql_config not found

파일을 찾을 수 없는 에러 같이 보입니다.

 

2. 그래서 해당 에러를 디버깅 해보았습니다.

아래와 같은 명령어를 입력합니다.

 

>> sudo apt-get install python-dev libmysqlclient-dev # sql 개발 헤더와 라이브러리를 설치해준다.

>> sudo apt-get install python3-dev # 파이썬 라이브러리도 설치해준다.

 

 

3. 위의 sudo apt-get install python-dev libmysqlclient-dev 명령어를 실행하니 아래와 같은 에러가 발생했습니다.

그리고 subprocess가 깨졌다는 오류를 발견하였습니다.

 

error: subprocess paste was killed by signal (Broken pipe)

왜 서브프로세스가 깨졌는지를 보니,

emacs를 설치하려고 했다가 깨진 것 같았습니다.

더보기

dpkg-deb: 오류: 붙여넣기 서브프로세스가 시그널 (파이프가 깨어짐)에 의해 죽었습니다 9:14 dpkg: error processing archive /var/cache/apt/archives/emacs26-common_26.3~1.git96dd019-kk1+18.04_all.deb (--unpack): '/usr/.crates2.json'의 덮어쓰기를 시도합니다. 이 파일은 ripgrep 11.0.2-1build1 패키지에도 들어있습니다 dpkg-deb: 오류: 붙여넣기 서브프로세스가 시그널 (파이프가 깨어짐)에 의해 죽었습니다 처리하는데 오류가 발생했습니다:

 

해결하기 위해 아래 명령어를 실행하였습니다.

sudo dpkg -i --force-all /var/cache/apt/archives/emacs26-common_26.3~1.git96dd019-kk1+18.04_all.deb

 

 

 

4. 이제 myslqclient를 다시 설치해보면 정상적으로 동작하는 것을 볼 수 있습니다.

>> pip3 install mysqlclient

 

 

 

이상 개발자 Henry였습니다ㅎㅎ

 

www.youtube.com/channel/UCYYao-BSPaetw7N2GFFJ-Yw

 

Henry Joo

© 2021 Google LLC CEO: 선다 피차이 주소: 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA. 전화: 080-822-1450(무료)

www.youtube.com

 

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다~~!!ㅎㅎ

 

오늘은 클라우드 서비스에서 실행중인 인스턴스(AWS 기준)에 외부에서 접근하도록 하는 방법에 대해서 기록을 해보려고 합니다.

 

1. 먼저 외부 인스턴스에 보안그룹이 있습니다.

보안그룹에서 인바운드 규칙을 아래와 같이 수정해주세요!

 

 

저는 TCP 관련 네트워크를 "모든 TCP" 를 추가해주었습니다.

기존에 생성되어있는 SSH 프로토콜 규칙은 해당 AWS인스턴스에 접근하기 위한 프로토콜입니다

 

 

 

2. 저는 인스턴스에 Django 서버를 열어주었기 때문에

setting.py를 아래와 같이 고쳐줍니다.

 

 

상단에 보시면 ALLOWED_HOSTS에 AWS인스턴스의 *퍼블릭 IP 주소를 추가해줍니다.

ALLOWED_HOSTS는 의미와 같이 허락된 HOSTS로 외부에서 접근가능하게 만들다는 것입니다.

 

 

AWS 인스턴스를 클릭하면 하단에 정보가 나옵니다

이 정보를 입력해주면 됩니다.

 

 

3. 마지막으로 장고 서버를 실행시킬 때 아래와 같은 명령어 옵션을 부여합니다.

 

 

>>python3 manage.py runserver 0.0.0.0:8000

 

0.0.0.0 옵션을 주어 외부의 모든 아이피에서 접근이 가능하도록 만들어 주었습니다.

또한 8000번(장고 기본 포트) 포트를 열어주어 AWS 인스턴스의 ip:8000으로 외부에서 접근이 가능하게 만들어주었습니다.

 

 

4. 모바일이나 다른 외부에서 해당 서버에 접근하였을 때 정상적으로 출력됩니다.

 

 

 

 

이상 긴 글 읽어주셔서 감사합니다~!

모두들 열공하세요~~!!ㅎㅎ

반응형

+ Recent posts