본문 바로가기
  • 시 쓰는 개발자

분류 전체보기176

숫자인 숫자, 문자인 숫자 n = 10 과 같이 키보드로 입력받지 않고 직접 작성해 넣은 코드에서, 숫자로 시작하는 단어(식별자, identifier)는 자동으로 수로 인식된다. 반면에 a,b,c = input().split() 3 4 5 이렇게 치면 다 더해서 345로 그냥 붙여서 출력되는데, 코드로 직접 a=3 b=4 c=5 해서 a+b+c 하면 12로 출력된다. / 물론 우리는 입력받을 때 map으로 입력받으므로 이런 실수는 하지 않는다! 2024. 3. 7.
split()과 split("")의 차이점 split() 공백 개수 상관없이 싹다 한꺼번에 처리해서 덩어리만 만들어준다. 그리고 공백 뿐만 아니라 탭이나 엔터도 처리해준다. split(" ") 공백 1개를 기준으로 싹다 처리해서, 공백이 2개면 " "도 덩어리로 만들어줌 Ex) iaa = "i am kwang hwi" \ "you can do it !!!" print(iaa.split()) print(iaa.split(" ")) split() : ['i', 'am', 'kwang', 'hwiyou', 'can', 'do', 'it', '!!!'] split(" ") : ['i', 'am', '', 'kwang', '', '', 'hwiyou', '', '', '', '', '', 'can', 'do', 'it', '!!!'] 2024. 3. 7.
list comprehension - list를 코드 한줄로 초기화하기 이 포스트에서는 list comprehension의 아주 간단한 형태만 보여주는데, 조금 더 숙달이 된다면 [ 출력되는 형태 또는 식 for 변수 in range(범위) if ~~] 처럼 한줄로 더 세세한 내용을 담을 수도 있다. 밑줄친 부분들이 특이점인데, 출력되는 형태 자체(x*2이나 x+2 처럼)를 정해줄 수도 있고, 홀짝(if x%2==0)처럼 조건을 달아서 출력해줄 수도 있다. 1) 1차원 리스트 초기화 하기 ① n개만큼 초기화 시켜놓고 시작하기 nums1 = [0 for i in range(10)] → list 0으로 10개 초기화 ② 직접 초기화 하기, 개수 제한 없음 nums2 = list(map(int, input().split())) → list에 원소들 하나씩 직접 입력해줌 2) 2차.. 2024. 3. 7.
최근 1년 내 가장 큰 도전은 무엇이며, 이를 해결하기 위해 노력한 과정에 대해 설명해주세요 없다. 얼마 전 지원했던 자기소개서의 문항이었다. 나는 이 문항에 쉽게 대답할 수 없었다. 난 안정적인 삶을 추구하기도 했고, 휴학 후 전공 공부에 매진했기 때문이다. 그렇다고 전공 공부를 하며 내가 아이디어를 내서 무언가를 도전해본 기억도 없다. 나는 그냥 아주 아주 순탄하게 살아온 한 사람이었다. 그래서 나는 공기업을 희망하기도 했다. 기복있는 삶을 싫어했고, 안정적인 패턴과 주어진 일에만 최선을 다하는, 그게 나에게는 멋진 삶이었기 때문이다. 그런데 문득 그런 생각을 했다. 내 고등학교 시절을 떠올렸을 때, 나는 공부에 있어서 크게 부끄러움이 없었다. 그냥 내가 할 수 있는 것을 열심히 했고, 상장도 많이 받았으며, 교우 관계도 딱히 문제 없었고 그냥 평범하게 살았지만 공부도 열심히 했기에 후회 없.. 2024. 3. 4.
문제풀이 & 오답노트 양식 step 1. 논리적인 흐름 직접 써내려가며 문제 파악하기 step 2. 적합한 자료구조 생각하기 step 3. 시간복잡도, 공간복잡도 계산해보기 step 4. 문제 풀기 (20~30분 투자) step 5. 문제 정리 / 오답노트하기 문제 분석 알고리즘 설계 내 코드 틀린 이유 코드 수정 느낀점 추가하면 좋은 것)) 시간복잡도 2024. 3. 4.
Portable Service Abstraction 백기선님의 스프링 강의를 듣고 작성하였습니다. 내용이 어려워서 종종 내용 확인해보고 틀린 부분은 보완하겠습니다. 스프링 핵심 3요소(Spring Triangle) 中 "서비스 추상화", PSA(Portable Service Abstraction)에 대해서 알아보자. PSA : 내부 동작을 추상화 PSA는 한마디로 "잘 만든 인터페이스"이다. 단어에서도 알 수 있듯이, 서비스를 추상화하는 작업이다. 잘 추상화 해놓았기 때문에 우리는 Low Level을 직접 다룰 일이 적다. 예를 들어 우리는 서블릿을 기반으로 두고 있음에도 불구하고 코딩할 때 Servlet이나 HttpServlet을 쓰지 않는다. 이것을 모두 Spring 웹 MVC에서는 @GetMapping, @PostMapping 등이 대체하고 있기 때.. 2024. 3. 4.
Aspect Oriented Programming 백기선님의 스프링 강의를 듣고 작성하였습니다. 내용이 어려워서 종종 내용 확인해보고 틀린 부분은 보완하겠습니다. 스프링 핵심 3요소(Spring Triangle) 中 "관점 지향 프로그래밍", AOP(Aspect Oriented Programming)에 대해서 알아보자. AOP : 공통적인 일을 분리한다. AOP에서 말하는 Aspect는 측면, 관점이라기 보다는 "여러 객체에 공통으로 적용되는 공통 관심사항"이다. 따라서 이런 공통 관심사항을 고려하며 프로그래밍하는 것이 바로 AOP이며, 더 정확히는 이런 공통되는 일을 분리하여 효율성을 높이는 방식을 의미한다. 만약 A작업 → 메세지 출력 → B작업 이런 flow가 있다고 하자. 이 구조가 여러 곳에서 쓰인다면 메세지 출력 부분만 다르고 A, B는 반복.. 2024. 3. 4.
Inversion of Control (Bean내용 포함) 백기선님의 스프링 강의를 듣고 작성하였습니다. 내용이 어려워서 종종 내용 확인해보고 틀린 부분은 보완하겠습니다. 스프링 핵심 3요소(Spring Triangle) 中 "제어의 역전", IoC(Inversion of Control)에 대해서 알아보자. IoC : 의존성 관리를 외부에서 해준다. 한마디로 메소드나 객체의 호출을 개발자가 결정하는 것이 아니라 외부에서 결정하는 것이다. 예를 들어 다음과 같은 코드를 보자. class Owner{ private OwnerRepository repo; public Owner(OwnerRepository repo) { this.repo = repo; } } Owner 클래스에서는 분명히 OwnerRepository를 사용하는데, 객체를 직접 생성하고 있진 않다. 생.. 2024. 3. 3.
인스타그램 때는 2020년 군대에 있던 시절이었다. 당시 나는 상병을 된지 얼마 안되었고, 군대에 지루함을 느끼던 시기였다. 그때부터는 군대 안의 상황보다는 밖의 상황에 더 관심을 갖게 되어, 자연스레 SNS에 빠지게 되었다. 군대에서 인스타그램을 처음 만들었고 친구들과 소통하는 것이 그저 재밌었다. 근데 군대라는 곳이 기본적으로 행복이랑은 거리가 좀 있다고 생각한다. 그래서 쉽게 감정이 요동치기도 한다. 새벽에 근무를 나갔다가 3시간을 자고, 점심에 일어나서 교육 받고 다시 1시간 쉬고 근무를 나가는 이런 상황이 반복되면 자연스럽게 스트레스가 쌓이게 된다. 그런 시기가 몇개월정도 반복될 때가 있었는데, 그때 인스타그램을 무심코 들어간 것이 화근이었다. 친구들은 방학을 맞아 모두가 어디론가 여행을 떠났고, 인스타그.. 2024. 3. 3.