습관1

다른 관점으로 보기위해서는 내가 먼저 다른 사람이 되어야만 한다.

 

습관 2

죽었을때 어떤 사람이었으면 좋겠는지를 먼저 정한 후 그 사람이 되기 위한 인생의 로드맵을 작성한다.

끝에 가서 살고싶은 라이프스타일을 정의하고 현재 할 수 있는 것부터 그 행동을 실천해 습관을 만들어 나간다.

남들이 써준 각본대로 살지 않고, 본인에게 맞는 각본을 새로 써라.

1장 - 코딩테스트, 어떻게 준비할까?

 

코딩테스트 시험볼때 IDE를 사용하므로 IDE로 연습해 익숙해지는 것이 좋다.

 

코드업, 백준온라인 저지, 프로그래머스 기출문제 활용

 

시간복잡도

보통 O(N^3)을 넘어가면 문제풀이에 이용하기 힘들다. 

10억 연산횟수 - 1초 걸리고, 보통 1~5초 이내에 완료되어야 한다.

시간복잡도에서 연산은 사칙연산, 비교연산등의 기본연산을 위한다. 비교연산도 들어가는 것에 주의

N의 범위에 따라 N , N^2 , N^3 사용 가능한 것이 달라진다.

 

공간복잡도

메모리 사용량을 의미하고, 코딩테스트에서는 보통 128~258 MB의 제한이 있다. 

보통 데이터 갯수가 1000만 단위가 넘어가면 이 제한을 넘는다.

 

시간과 메모리 측정이 가능한 코드가 존재한다.

 

 

2장 - 16~20년도 코딩테스트 기출 분석

 

코딩테스트에서는 주로 기초알고리즘에 기반하는 문제 출제

출제 빈도 순서 : 그리디 > 구현 > DFS/BFS 이용 탐색문제 > 정렬 > 다이나믹 프로그래밍 > 이진탐색 > 최단경로 순

시간이 촉박할 수 있으나, 절반이상을 맞추면 보통 통과

 

채용프로세스

서류검토 - 코딩테스트 - 기술면접 - 인성면접

대기업은 코딩테스트에, 스타트업은 기술면접에 비중 (대기업은 경험보다 문제해결능력, 스타트업은 경험중시)

 

기술면접

 

알고리즘 문제풀이와 질의응답 - 코딩테스트 내용토대로 면접진행, 접근방식과 풀이방식을 논리정연하게 설명해야함

-> 어떤 상황에 어떤 알고리즘을 사용하는지 적어둔 부분을 익혀둘 것 (특정한 상황에 무엇이 좋은지 판단할 수 있어야)

 

포트폴리오 질의응답

->게임회사 취업고려시 포트폴리오 완성, 문서화 (프로젝트당 1~2장 분량으로 개발과정 문서로 정리, 문제점과 해결방법 배운점 정리, 깃허브에 소스코드 올리고 배포경험 ,AWS 등 클라우드 서비스 이용했으면 이력서 기술)

 

컴퓨터공학 지식 질의응답

운영체제나 컴퓨터 아키텍쳐, 개발방법론 등 알고리즘을 제외한 질문은 보통 직무에 관련된 내용을 물어보므로 관련 분야의 지시을 중점으로 알아둘 것.

 

깃허브

깃허브에 만든 프로젝트와 백준 온라인 저지에서 푼 정답 소스코드를 정리해서 올리는 것이 좋다.

잔디밭 - 성실함을 어필할 수 있음

 

인성질문 리스트

 

개발하면서 행복했던점 - 얼마나 개발에 열정이 있고 재미를 느끼는지 보고싶은 것 

자신이 가장 열정적으로 참여한 프로젝트 - 내가 맡은 임무에서 어려운점, 해결한점 , 배운점 (실력향상) 을 이야기할 것

회사에 궁금한 것 - 개발자의 성향중에서 긍정적인 부분 이끌어낼만한 것 ( 수면공간 - 문제를 끝까지 해결하는 성격이라 수면공간 있으면 좋다~ 식으로 ) 

 

 

Hello World 출력하기


C


사용하기 어려움

읽기 더 어려움


printf("Hello, %s %d \n","world",123);



C++


사용하기 더 쉬움

읽기도 더 쉬움


std::cout << "Hello, " << "world" << 123 << std::endl;  ( <<은 <- 로 밀어넣는다고 생각하면됨 )




네임스페이스 (namespace) 


어떤 공간을 정의하고 이름을 정해준다 , 동일한 이름의 것을 다른 공간에 정의하면 다른것으로 본다


함수 , 클래스 등의 충돌을 피하기위해 만들어진것




using 지시문


타이핑의 양을 줄이는 방법일뿐


using namespace std;


cout<< "Hello,World! " << endl; // std:: 생략가능


#pragma once // 이렇게하면 헤더가 한번만 #include 됨 #ifndef  ...  #endif 대체




<< 연산자 (operator)


출력연산자 , 밀어넣는 연산자 , push 연산자


+ 혹은 - 등과 같은 연산자 중 하나


C++에서는 프로그래머가 연산자의 동작을 바꿀 수 있다




출력 형식 지정 ( Output  Formatting ) 



16진수 출력


C


int number = 10;


printf( "$#x\n" , number ); // 쉽게 안읽힘


-> Manipulator( 조정자 )  도입  -> 내가 원하는것을 하게만드는것



C++


int number = 10;


cout << showbase << hex << number << endl;




조정자( Manipulator )



showpos / noshowpos - positive (양수) 숫자가 양수이면 + 사인 보여줘


cout << showpos << number; // +123

cout << noshowpos << number; // 123



dec / hex / oct - 10진수 /16진수/8진수


cout << dec << number; // 123

cout << hex << number; // 7b 

cout << oct << number; // 173



uppercase / nouppercase  - 대문자로 바꿔라 / 대문자로 바꾸지마라


cout << uppercase << hex << number; // 7B

cout << nouppercase << hex << number' // 7b



showbase / noshowbase - 몇진법인지 표기해줘라 / 표기하지 말아라


cout << showbase << hex << number << endl; // 0x7b

cout << noshowbase << hex << number << endl; // 7b



left / internal / right - 왼쪽정렬 /  부호는 제일왼쪽 숫자는 맨오른쪽 정렬 / 오른쪽 정렬


number 변수값이 -123이라면 


cout << setw(6) << left << number; // -123

cout << setw(6) << internal << number ; // -   123

cout << setw(6) << right << number; //      -123



showpoint / noshowpoint  - 소수점 이하를 보여준다 / 안보여줄수 있으면 보여주지말아라


decimal1의 값이 100.0 , decimal2의 값이 100.12 라면 


cout << noshowpoint << decimal1 << " " << decimal2; //100 100.12

cout << showpoint << decimal1 << " " << decmal2; // 100.000 100.120



fixed / scientific - 고정적인 실수표기법 / 과학적인 표기법


number 의 값이 123.456789라면


cout << fixed << number; // 123.456789

cout << scientific << number; // 123.4568E +02



boolalpha / noboolalpha  - 불리언값을 알파벳으로표기 / 숫자로표기 (true false 1 0)


bready 값이 true 라면


cout << boolalpha << bReady; // true

cout << noboolalpha << bReady // 1




#include <iomanip> 안에있는 조정자



setw() - 컬럼수 정해준다


number의 값이 123 이라면


cout << setw(5) << number; //  __123



setfill() - 빈공간을 다른캐릭터로 채워달라


cout << setfill ('*') << setw(5) << number; // **123



setprecision() - 유효자리 몇자리까지 보여줄건지  ( 반올림 ) 


number의 값이 123.456789라면


cout<< setprecision(7) << number ; // 123.4568


* fixed가 없는경우엔 정수부 + 소수부 기준으로 반올림하여 출력

  fixed가 있는 경우엔 소수부만을 기준으로  반올림하여 출력함




메뉴를 출력해보자


#include<iomanip>


const float coffeePrice = 1.25f;

const float lattePrice = 4.75f;

const float breakfastComboPrice  = 12.104f;


const size_t nameColumnLength  = 20; // 컬럼 길이설정 size_t는 정수절대값의미하는 자료형

const size_t priceColumnLength = 10; 


cout << left << fixed << showpoint << setprecision (2); // 조정자는 이 한줄에서만 영향을 미치는것이 아니라 뒤에 나오는 모든 출력에 영향을 미친다


cout<< setfill( '-' ) << setw(nameColumnLength  + priceCoulumnLength) << "" << endl << setfill ( ' ' ); 


cout << setw(namecolumnLength) << "Name" << setw( priceColumnLength ) << "Price" << endl;


cout << setw(nameColumnLength) << "Coffee" << "$" << coffeePrice << endl;




cout 멤버 메서드 - 조정자를 함수로 쓰는방법 ( 알고만 ) 


조정자

cout << showpos << number; 

멤버메서드

cout.setf(ios_base::showpos);

cout <<number;


조정자

cout << setw(5) << number;

멤버메서드

cout.width(5);

cout <<number;



네임스페이스 ios_base


setf() , unsetf()

width() , fill() , precision()


그리많이 사용되지 않음



setf(flag) / unsetf(flag)


인자 - boolalpha , showbase , uppercase , showpos


setf( flag , flag )


첫번쨰인자 - dec , oct , hex / fixed , scientific / left , right , internal


두번째인자 - basefield / floatfield / adjustfield





+ Recent posts