목록전체 글 (131)
세리프 따라잡기

분할정복법 (Divide & Conquer): 큰 문제를 작은 문제로 분할해 재귀적으로 해결 ☞ 간단히, 큰 문제 보다는 작은 문제를 해결하기 쉬우니까~ base case: 이미 문제가 충분히 작아서, 더 작은 부분 문제로 나누지 않아도 바로 답을 알 수 있는 경우 recursive case: 문제가 커서 바로 답을 알 수 없어서, 같은 형태의 부분 문제들로 쪼개서 풀어야 하는 경우 간단 예제(맛보기) ex. Q. 1~8까지의 합을 구하라 [recursive case라고 생각하며 풀어보기] → 과정 1. 1-4 와 5-8로 쪼개서 구해보자. //그래도 너무 크다? 2. 1-4범위를 1-2와 3-4로 또 쪼개서 구해봄 //근데도 아직 큰거야.. 3. 1-2범위를 1과 2로 쪼개서 구해본다! // 1에서 1..

순차 탐색: 리스트 안에 있는 특정한 데이터 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 [별다른 말이 없다면 기본적으로 이 방법으로 탐색] 이진 탐색: 정렬되어 있는 리스트에서 (만족한다면) 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 -> 탐색 범위를 정해줘야함. 시작점, 끝점, 중간점. ex. step1 중간점 선정은 중간점index값에서 소수점 이하는 제거다. 우리가 찾는 값이 4일 때, 중간점 보다 왼쪽에 있으므로, 중간점~끝점까지는 볼 필요가 X 따라서 끝점을 중간점보다 한 칸 왼쪽으로 다시 재지정해준다. step2 끝점의 위치 조정으로 인한 중간점 재지정에 들어감. 이번에도 찾고자 한 값이 중간점보다 오른쪽에 있으므로 시작점~중간점은 볼 필요X 따라서 시작점을 중간점보다 한 칸..

과거에 대한 성찰 월요일부터 입소했으니, 오늘로 정글러가 된 지 6일 차다. 일단 지금까지도 한편으로 꾸준히 드는 생각은 '나 여기 어떻게 왔지?'가 떨쳐지질 않는다. 다들 기본적으로 할 줄 아는 사람들이 왔기 때문이다. 이제와 보니 나는 몰입을 전혀 안 했던 것 같다. 그렇지 않고서야.. 이렇게까지 모든 게 새롭고 내 마음대로 술술 풀리는 게 정말 쉬운 것 밖에 없지 않을 테니😣 처음에 입소할 때만 해도 후기에서 본 이전 기수분들처럼 글도 열심히 쓰면서 해보자! 이랬는데, 막상 한 치 앞도 모를 숲 속에 들어와 보니 바깥일은 다 모르겠고 당장 하루 식량(?) 구하기 바쁘다. 그마저도 강의실에 새벽까지 남아서 매달려야 겨우겨우 끝내고 있다. 왜 전 기수분들이 '알고리즘 공부는 하고 오라.'라고 했는지, ..
SW사관학교 정글 5개월 간의 합숙 과정을 거쳐 5~10년에도 성장하는 개발자로 거듭나세요 swjungle.net 가기 전 직전 밤에 마음가짐을 적어보고자 오랜만에 블로그를 켰다..ㅋㅋㅋ 사실 여지껏 합격이 너무 얼떨떨해 있는데, 여전히 드는 생각은 '진짜 내가 합격해도 될 관상(?)인가' 싶다. 그 이유는 지금의 내가 시간이 있었지만, 예/복습을 너무 부족하게 하고 가는 것 같아서다. 부족하니까 쉽게 말해 이제와서 불안하다🤦♀️ 하지만 이미 지난 일을 가지고 후회해봤자 뭐 답이 없다. 이제 당장 코 앞이고, 일은 벌어졌다! 그냥 입소 전 지금 이 글을 쓰는 나와, 앞으로 5개월간 정글에서 지낼 나에게 이렇게 말하고 싶다. 그냥 앞만 보고 직진하자. 주어진 일에 최선을 다 하자. 포기하지 말자. 좌회전..

13. 소프트웨어 품질보증 13.1 소프트웨어 품질(quality): 주어진 요구사항을 만족시키는 능력을 갖추고 있는 소프트웨어의 측정 가능한 기능 및 특성 (소프트웨어가 지닌 바람직한 속성의 정도, 성능이 향상되는 것은 아님) - 품질의 분류 설계 품질 설계자가 한 품목을 위해 규정한 특성 (요구사항을 지키는) 일치 품질 설계 내용들이 개발 과정에서 지켜지는 정도 (구현된 정도) - 품질 관리 (quality control): 주어진 요구사항에 맞는 소프트웨어를 개발하기 위해 소프트웨어 개발의 전 과정 동안에 이루어지는 모든 활동과 그 활동의 결과로 생산되는 산출물(program)에 대한 품질을 통제하고 보증하기 위한 작업. ▷ 품질보증 - 관점: 입장에 따른 품질보증 (소프트웨어를 보는) - 개발자:..

var는 function-scoped let, const는 block-scoped이다. function-scoped는 함수 내에서 선언된 변수가 그 범위 내에서만 유효하고 외부에서는 참조할 수 없는 것을 말한다. 즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다. block-scoped는 모든 코드 블록(함수, 조건문, 반복문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다. var var ex = 123; // 전역 변수 console.log(ex); // 123 { var ex = 456; // 전역 변수 } console.log(ex); // 456 bl..

제어문에는 크게 조건문과 반복문이 있다. 조건문: '만약 ~하면 ~해라' 반복문: (엄청 많은 일을 반복해야 할 때) ▶조건문 if문 money = True if money: #if 조건문: print('ride taxi') #수행할 문장1 … else: print('walk') 기본 구조/개념 - 들여쓰기 앞서 언급했지만, 파이썬에서는 들여쓰기를 문법처럼 중요하게 여기기 때문에 확실하게 지켜줘야 한다. money = True if money: print('ride taxi') print('tada') #SyntaxError: invalid syntax else: print('walk') 들여쓰기를 잘못하면 위와 같이 오류 메시지가 발생되며 수행이 안된다. + 그리고 반드시 콜론(:)을 이용한다는 것을 ..

튜플 자료형 리스트와 튜플의 차이점 리스트 튜플 대괄호 [] 소괄호 () 요소 변경 가능 [값의 생성/삭제/수정이 가능] 요소 변경 불가능 (길이도 고정, 값도 고정) 즉, 튜플의 핵심은 변하지 않는다는 것이다. 튜플 다루기 - 인덱싱과 슬라이싱이 가능하다. - 더하기와 곱하기 연산이 가능하다. - 길이 구하기가 가능하다. 튜플 예제 [+리스트와의 차이점] Q. (1,2,3)이라는 튜플에 값 4를 추가해 (1,2,3,4) 출력 a=1,2,3 print(a+(4,)) #(1, 2, 3, 4) 1. 튜플은 1개의 요소만을 가질 때는 요소 뒤에 반드시 ,를 붙여야 한다. 2. 위 코드 속 a=1,2,3처럼 괄호()를 생략해도 무방하다. 딕셔너리 자료형 루비: hash, 자바: map, 자바스크립트: objec..

문자열 포매팅 사용 이유: 따옴표로 여러 번 안 닫아 줘도 된다. 1. 포매팅을 사용하지 않은 방법 >>> "i eat "+str(3)+" apples" # 문자 3을 넣어줌 'i eat 3 apples' 2. 포매팅을 사용한 방법 : 더 편리함 >>> "i eat %d apples." %3 'i eat 3 apples.' # d의 자리에 뒤에 적은 3이 출력됨. 2-1. 포매팅 활용 num = 5 day = "three" a = "i ate %d apples. so i was sick for %s days" %(num, day) # "% () ,"를 이용해 2개 이상의 값 넣기 print(a) # i ate 5 apples. so i was sick for three days * %s 코드의 재밌는 점..

※ 코드블럭에 프롬프트(>>>)로 시작하는 코드들은 파이썬 셸에서 입력한 것이고, 없다면 에디터 형식으로 입력한 것. # 둘러보기 [맛보기] >>> 1+1 #사칙연산 2 >>> 3/2.4 1.25 >>> 3*9 27 >>> a=1 #변수에 숫자 대입하고 계산 >>> b=2 >>> a+b 3 >>> c="pie" #변수에 문자 대입하고 출력 >>> c 'pie' >>> if b>1: #조건문if print("b is greater than 1") # → b가 1보다 크면 " "안의 문구를 출력하라 b is greater than 1 >>> for a in [1, 2, 3]: #반복문for print(a) # → [ ] 리스트의 앞에서부터 하나씩 꺼내 a 변수에 대입하고 출력하라 1 2 3 >>> i=0 #..