본문 바로가기

반응형

old/Programming

(103)
파이썬의 사칙연산 사칙연산의 종류 기호 설명 리턴값 + 더하기 인풋에 따라 - 빼기 인풋에 따라 * 곱하기 인풋에 따라 / 나누기 실수 // 나누기 정수 % 나머지 값 나머지 값만 리턴 ** 제곱 제곱된 값 and and 게이트 T or F or or 게이트 T or F 미만 T or F = 이하 T or F == 같음 T or F 결과 +, -, *, /, //, %, **, , = 테이블 A B 결과 int int int A+B result int float float A+B result int bool-T int A+1 result int bool-F int A+0 result int none TypeError int String TypeError float bool-T float A+1 result float bo..
파이썬의 변수 변수의 종류 scalar와 non-scalar 둘다 object임. scalar int : 정수 float : 실수 bool : True or False none : Null non-scalar String : 문자열 클래스 확인하는 방법 print(type(Variable)) 대소문자 구분함 a 와 A는 서로 다른 변수임 형변환 x = str(3) # "4" 문자열 y = int(3) # 4 정수 z = float(3) # 4.0 실수
꼬리 재귀 함수 정의 재귀함수의 최적화 방법 원리 재귀 함수시, 함수에 계산해야할 나머지 명령어가 남아 있다면, 스택 메모리에 그대로 함수가 기다리게 됨, 이와는 반대로 이후에 계산할게 없다면, 스택메모리에 함수를 남기지 않아도 되므로, 최적화가 가능함. 이를 꼬리 재귀함수Tail Recursion 라고 부름 꼬리 재귀 함수 Tail Recursion 꼬리 호출 제거 tail call elimination 꼬리 호출 최적화 tail calll optimization How to 재귀함수의 리턴부분에 함수 호출이 아닌 다른 연산자가 붙지 않도록 만듭니다. 컴파일러 원리 특성상, 컴파일러, 즉 사용 언어에서 지원을 해주어야 사용 가능함. C++, C#, Kotlin, Swift은 꼬리 재귀 최적화를 지원하며, Scala는 ..
반복문vs.재귀함수 정의 큰 문제를 반복 가능한 작은 문제로 나눠 푸는 방법 모든 재귀함수는 반복문으로 작성 가능 장단점 반복문 재귀함수 직관적 상대적으로 복잡함 코드가 김 코드가 짧음 가독성이 좋지 않음 가독성이 좋음 메모리를 적게 사용 메모리를 많이 사용 스택오버 플로우가 일어날 가능성이 거의 없음 호출이 너무 깊으면 스택오버 플로우 변수상태가 저장되지 않음 각 단계의 변수 상태가 자동 저장됨(함수의 스택 프레임 때문) 함수 호출 과부화가 일어남 실무 실무는 가독성이 좋고 유지보수가 좋은 코드가 좋으므로, 기본적으로 재귀함수로 작성 이런 경우 반복문의 작성(재귀함수의 단점 때문) 스택오버 플로우가 날 가능성이 있는 경우 : 피보나치 수열의 큰수를 계산해야 하는 코드 성능문제가 확인된 경우: 1초에 10만번씩 실행되어야 ..
좋은 코드 쓰는 법 입력과 출력이 명확히 정의 되어 있어야 한다 대부분의 프로그래머의 실수는 입출력의 범위를 착각 해서 생겨납니다. 문제가 원하는 정확한 범위를 구체적으로 예측하고 이를 구현해야 에러가 생기지 않습니다 알고리즘의 각 단계가 명확해야 한다 알고리즘의 단계별로 잘 나뉘어져 있어야 하며, 프로그래머가 스탭을 잘 이해하고 있어야 합니다. 컴퓨터 구조를 알고 있어야 한다. 가끔 어떤 코드들은 계산 중에 에러가 나기도 합니다. 이 문제에 대해서 파악을 하려면, 컴퓨터에 데이터가 어떻게 저장되는지 알아야 하며, 힙 메모리와 스택 메모리의 차이점 등등의 컴퓨터의 구조를 이해 하고 있어야 합니다. 유한 시간안에 결과가 나와야 한다 아무리 중간에 효율적이고 혁신적인 코드가 들어갔더라도, 결과물이 나오지 않으면 의미가 없습니다..
[Android Studio 소스코드]를 [Github]에 업로드 하는 법 1. 먼저 repository를 만든다. -> github에서 new repository를 해서 이름을 설정하고 만든다. - 이름 설정 외에 따로 누를 건 없음 2. 안드로이드 스튜디오의 작업한 파일에서 VCS -> Enable Version Control Integration 을 누른다. 3. 창이 뜨는데 해당 창에서 Git을 선택하고 OK 버튼을 누른다. -> 이 때 안드로이드 스튜디오 창에 맨 하단부에 Git:master가 생겼는 지 확인 4. 다시 VCS를 누르고 Commit을 한다.(git에 올릴 파일들을 선택하는 과정) 5. 창이 뜨면 자신이 올릴 파일들을 선택한다. 보통은 Unversioned Files 전체를 선택하면 될 것. 6. git에 올라갈 Commit Message를 입력한다. 그..
알고리즘 이란 정의 어떤 문제를 푸는 정확한 방법 어떤문제: 이 뜻은 문제가 의미하는 바가 정확해야 합니다. 주어지는 정보는 뭐뭐가 있는지, 결과는 정확히 어떤 역할을 수행해여야 하는지. 정확한 방법: 이 뜻은 아무것도 모르더라도 실행할 수 있도록 정확하고 세세하게 지시 되어야 함을 뜻합니다. 예시 자판기에서 음료수를 뽑는 문제를 푸는 알고리즘을 만들어봅시다. 동전을 자판기에 넣는다 음료수를 선택한다 음료수를 자판기에서 꺼낸다 이 역시 알고리즘이지만, 컴퓨터에게는 알고리즘이라고 하기엔 조금 부족합니다 주머니에서 500원짜리 동전 3개를 꺼낸다 자판기 투입구를 찾는다 투입구에 500원짜리 동전을 3개 넣는다 원하는 음료수를 자판기에서 찾는다 원하는 음료수 밑의 버튼을 누른다 음료수가 나오는 자판기의 출구를 찾는다 자판기..
Java에서 컴페레터comparator와 컴페터블compatable의 차이점 정의 컴페레터comparator와 컴페터블compatable은 둘다 인터페이스interfaces이며, 어레이array나 리스트list를 여러 특수한 조건에 맞춰서 정렬을 시키기 위해 만들어져 있다. 목표 컴페레터comparator와 컴페터블compatable은 서로 매우 비슷하며, 햇갈리기가 쉽다. 차이점을 알아보고 어떤걸 쓰는게 좋은지 알아보자. 차이점 Comparable Comparator java.lang package. java.util package. 클래스에 영향을 줌 클래스에 영향을 주지 않음 compareTo() 메서드를 오버라이드하며, 1개의 파라미터를 가짐 compare() 메서드를 생성하며, 2개의 파라미터를 가짐 Collections.sort(List)로 사용 Collections...

반응형