본문 바로가기

분류 전체보기

(193)
22년 11월 11일 알고리즘 알고리즘 2일차. 여전히 어렵지만 일단 개념이라도 챙겨가기로 했다. 어레이, 링크드 리스트 글로 쓰기 애매해서 코드를 시각적인 형태로 보여주는 사이트에서 코드를 써 가지고 만들어왔다. 이와 같은 형태가 링크드 리스트이다. 데이터가 서로 다른 인스턴스에 저장되어 있다. 그리고 이와 같은 형태가 어레이이다. 그림으로 보다시피 링크드 리스트는 삽입이나 삭제를 할 때 그 부분의 값만 수정하면 되므로 어레이에 비해 수정, 삭제가 용이하다.
22년 11월 10일 알고리즘 알고리즘 강의를 수강했다. 그런데 이 알고리즘 강의가 너무 어려워서 일단 개념만 짚고 넘어갔다. 1. 시간 복잡도 시간 복잡도란 입력값과 문제를 해결하는 데 걸리는 시간과의 상관관계를 말한다. 이렇게 복잡하게 쓰면 잘 모르겠고 쉽게 줄이면 코드가 값을 산출하는데 얼마나 시간이 걸리는지를 판별하는 것이다. 즉, 시간 복잡도가 더 크다 = 연산을 하는데 시간이 더 오래걸린다 이다. 그럼 시간 복잡도를 어떻게 판별하냐? 코드의 각 줄이 실행되는 걸 1번의 연산이 된다고 생각하고 계산하면 된다고 한다. 예를 들면 아래 코드에서, def find_max_num(array): for num in array: for num2 in array: if num < num2: break else: return num arr..
22년 11월 09일 파이썬 기초(2) 어제 했던 파이썬 공부를 이어서 했다. f스트링의 적용방법에 대해서 배웠다. 둘의 값은 같게 나온다. 집합에 대해서 배웠다. a = ['1','2','3','4','5'] b = ['2','4','6','1'] print(set(a) & set(b)) 위 코드와 같이 쓰면 두 그룹의 교집합을 구할 수 있다. 이를 조금 응용하면, 이런식으로 대칭 차집합도 구해 볼 수 있다. 이번에 파이썬에 대해 배우면서 가장 신기했던 한줄쓰기는 다음과 같이 쓸 수 있다. 왼쪽과 오른쪽의 값은 같게 나온다. 이를 이용하면 리스트를 쓸때도 다음과 같이 활용할 수 있다. 마지막으로 파이썬에서 클래스를 이용해 객체를 관리하는 방법에 대해서 배웠다. class Monster(): hp = 100 alive = True def da..
22년 11월 09일 파이썬 기초(1) 파이썬 기초 강의를 수강했다. 그동안 배웠던 것을 복습하는 느낌으로 배웠는데, 새로 배우는 것들도 있었다. 간단히 새로 배운 것들만 쓰자면 다음과 같다. 문자열의 길이는 len() 함수를 써서 구할수있다. print(len("안녕하세요.")) 이렇게 쓰면 값이 5가 나온다. a = [1, 3, 2, 4] print(a[3]) # 4 print(a[1:3]) # [3, 2] print(a[-1]) # 4 (맨 마지막 것) 리스트에서 지정한 값을 값을 찾는 코드이다. a = [2, 5, 3] a.sort() print(a) 정렬하기 기능이다. 값은 2,3,5로 출력된다. 요소가 리스트 안에 있는지 알아볼수도 있다. a = [2, 1, 4, "2", 6] print(1 in a) # True print("1"..
22년 11월 07일 자바 기초 이전에 잠깐 혼자 공부했었던 자바를 강의로 다시 배웠다. 이전에 공부했던 거지만 복습한다는 생각으로 다시 들어보았다. 강사님이 설명해주시는 것 중에 전에 학습하지 못했던 내용들이 몇개 있었다. int[] intArray = new int[]{1,2,3,4,5}; System.out.println(Arrays.toString(intArray)); 참조 자료형인 int배열이다. sout(intArray);에서 intArray에 ALT+ENTER하면 자동으로 래핑이 된다. 그 외 변수와 상수, 기본 자료형, 연산자, 조건문, 반복문 등을 복습하고 있었는데 반복문의 for 문에서 의문이 들었다. 1부터 10까지의 숫자를 더한다고 했을때 내가 아는 코드는 int num; for(num = 1; num
10주차 개발일지 스파르타 내일배움캠프에서 진행한 팀 미니프로젝트에 참여하여 팀프로젝트를 진행했다. 배운 것 그동안 배웠던 파이썬과 자바스크립트를 활용해 간단한 웹페이지와 댓글 추가,불러오기,수정,삭제 기능을 만들었다. 댓글 기능 구현외에는 간단하게 개인 프로필 불러오기 기능을 구현했다. 팀 프로젝트를 진행하고, 피드백을 받았는데, 메인페이지와 개인 프로필의 기능을 왜 같이 하지 않았냐는 말을 하셨다. 메인 페이지와 개인 프로필의 디자인과 기능이 따로 노는 이유는 담당한 사람이 서로 달라서인데, 메인페이지는 팀원분이 추가해 주셨고, 개인 프로필은 내가 담당했다. 당시 나는 기능을 통일할 생각도 하지 않았고, 이에 대해 팀원분과 소통하지도 않았다. 전적으로 내 소통의 부재때문에 생긴일이라고 생각한다. 어쨌든, 프로젝트가 끝..
미니프로젝트(끝) 5일간의 길다면 길고 짧다면 짧은 미니프로젝트가 발표를 끝으로 마무리가 되었다. 그동안 만들어놓은 ppt를 토대로 발표를 진행했고, 튜터님께 메인화면과 개인페이지의 기능을 통일하는게 어떻냐는 피드백을 받았다. 1.메인화면 우리 팀은 메인화면의 응원하기 버튼에 댓글을 남기는기능과 댓글 수정기능, 삭제기능, 남은 댓글의 수가 표시되는 기능, 댓글을 남긴 시간이 표시되는 기능 등을 넣었다. 2.개인 페이지 그리고 팀의 개인페이지에는 방명록을 남기는 기능과, 방명록을 삭제하는 기능만 넣었다. 3.원인 같이 제작한 것임에도 들어간 기능이 저렇게 차이나는 원인은 기능을 담당해서 구현한 사람이 달랐고, 구현한 두 사람 사이에서 토의가 전혀 이루어지지 않았기 때문이다. 방명록의 기능을 담당한 사람은 나였고, 메인화면의..
미니프로젝트(3) 팀원과의 협업으로 미니프로젝트를 진행한지 3일차다. 드디어 발표를 하루 앞두게 되어 발표준비를 하게 되었다. 우리팀은 발표를 ppt로 준비하기로 했다. 그동안 만들었던 프로젝트의 api도 ppt에 넣고 만든 코드도 캡쳐해 ppt에 넣고 설명도 추가했다. 그동안 내가 직접 쓴 코드라 설명이 쉬울것이라고 생각했는데 코드에 대한 설명을 간략하게 간추려서 넣는것이 생각보다 쉽지 않았다. 프로젝트를 만들면서 만났던 오류 친구에 대한 하소연도 써서 넣었다. 마음에 드는 코드도 써야 한다고 해서 첫날 시간을 잡아먹었던 window.open()함수에 대해서 썼다. 오늘은 프로젝트 발표를 준비하면서 그동안 만들었던 프로젝트의 코드를 다시 보았다. 내가 메인 발표를 담당하지는 않지만, 그래도 내가 쓴 코드들에 대해서 설명..
미니프로젝트(2) 팀원과의 협업으로 미니프로젝트를 진행한지 2일차다. 방명록의 db를 연결하는데 팀원분이 mongodb에 데이터가 제대로 들어오지 않아 원인을 찾아 헤맸다. 알고보니 mongodbclient주소를 본인의 것이 아닌 다른사람의 것을 쓰고 있던 것이어서 주소를 바꿔주자 제대로 작동했다. 그 후, 방명록에 남긴 댓글이 mongodb에 들어가게 하는 작업을 진행했다. 그런데, 여기서도 또 오류가 났다. 대충 해석하면 함수가 NONE이거나 RETURN없이 끝났다는 건데 저렇게 오류는 띄우면서 mongodb에 데이터는 잘 들어갔다. 오류 코드를 구글링 해봤는데 많은 사람들이 return jsonify()하라고 글을 쓰거나 답변을 했다. 그런데 문제는 이걸 어디에 쓰느냐가 전혀 감이 잡히지 않았다. 오류문에서 친절하게..
미니프로젝트(1) 팀원과의 협업을 통해 미니프로젝트를 진행했다. 미니프로젝트의 대략적인 틀은 메인페이지에 팀원에 대한 내용을 간략하게 표시하고, 팀원의 사진을 누르면 팀원 개인에 대한 상세페이지가 팝업되는 것으로 계획했다. 팝업되는 상세페이지 창에는 코멘트를 남길수 있으며, 코멘트를 남기면 mongodb를 통해 남긴 코멘트를 저장하고 불러오는것으로 결정했다. 이 중 상세페이지 팝업과 코멘트를 mongodb에 저장하고 불러오는 기능구현을 팀원 한명과 같이 담당하게 되었다. 그 동안 배운 것을 활용하면 간단할 것이라고 생각했는데 상세페이지 팝업부터 구현에 어려움을 겪었다. 구현된 html안에서 html을 불러와서 팝업으로 띄워야하는데 방법이 좀처럼 생각나지 않아 한시간동안 구글링을 했다. 답은 window.open()함수와 ..