Programming/Java & Python 9

[Python] 5장 재귀와 반복 : 정렬 (Sorting)

1. 선택 정렬 (Selection sort) 재귀 버전 def selectionSort(xs): if xs != []: smallest = min(xs) xs.remove(smallest) return [smallest] + selectionSort(xs) else: return [] 꼬리재귀 버전 def selectionSort(xs): def loop(xs, ss): if xs != []: smallest = min(xs) xs.remove(smallest) return loop(xs, [smallest] + ss) #ss.append(smallest) return loop(xs,ss) else: return ss return loop(xs, []) while 루프 버전 def selectionSo..

[Python] 4장 재귀와 반복 : 자연수 계산

1. 재귀함수 vs 꼬리재귀 재귀 (recursive) 함수 꼬리 재귀 (tail recursion) 함수 계산한 결과에다 더할 수를 기억 -> 재귀 호출의 횟수만큼 저장 공간을 사용 더 이상 기억해둘 것이 없음 (답을 누적) -> 공간이 필요 없음 (공간 절약) return n + sima(n-1) 이용 return loop(counter, accumulator) 이용 +) 지역함수를 이용한 캡슐화의 장점은 ?? 2. 재귀 함수 vs while 루프 재귀 함수 while 루프 하향식 (Top-down) 상향식 (Bottom-up) 실행 논리를 직관적으로 표현 가능 BUT, 공간 효율이 떨어짐 꼬리 재귀 or while 루프같은 상향식은 공간 절약 가능 3. 재귀 vs 꼬리 재귀 vs while 루프 실..

[Python] 3장 제어구조

1. 단축 계산 (short-circuit evaluation) 수식은 이항 연산을 할 때 양쪽 피연산자의 계산 결과가 모두 있어야 계산 진행 가능하다. 그러나 논리식 계산은 왼쪽 피연산자의 계산 결과에 따라서 오른쪽 피연산자의 계산을 생략 가능하다. 즉, 왼쪽 피연산자의 계산 결과만으로 전체 계산 결과가 명백해지면, 결과에 영향을 받지 않는 오른쪽 피연산자 계산은 생략한다. - and 연산 : False and ( ) -> 오른쪽 피연산자 계산 생략, 결과 False - or 연산 : True or ( ) -> 오른쪽 피연산자 계산 생략, 결과 True ex ) 무한 loop() 를 이용한 단축 계산 확인 - def loop() : loop() #자기 자신을 호출하는 함수로, 원칙적으로는 프로그램이 영..

[Java] String 클래스와 주요 메소드

1. String 클래스(class) java.lang 패키지에 포함된 클래스로서 String 클래스는 문자열을 의미한다. 자바에서 모든 스트링 리터럴은 내부적으로 String 객체로 처리된다. 스트링 객체는 수정이 불가능하다. String s = new String("Hello"); String t = s.concat("Java"); // 스트링 s에 "Java"를 덧붙인 스트링 리턴 "Hello"인 s와 "HelloJava"인 t 객체가 존재하게 된다. 스트링 객체 s는 수정이 되지 않았다. 2. String 클래스의 주요 메소드 메소드 설명 char charAt (int index) 지정된 index에 있는 문자 값 리턴 int codePointAt (int index) 지정된 index에 있는 유..

[Java] enum (열거형) 이해와 사용법

enum class 코드가 단순해지고 가독성이 좋다 상수값의 타입 안정성이 보장된다 enum class를 사용해 새로운 상수들의 타입을 정의함으로 정의한 타입 이외의 타입을 가진 데이터값을 컴파일시 체크한다 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 알 수 있다 서로 연관된 상수들의 집합을 의미 기존에 상수를 정의하는 방법이였던 "final static string"과 같이 문자열이나 숫자들을 나타내는 기본 자료형의 값을 enum을 이용해서 같은 효과를 낼 수 있다

[Java] 배열 : 레퍼런스 vs 배열, 다차원 배열

1. 자바에서의 배열 자바에서의 배열은 C에서 포인터의 개념을 알고 있으면 이해하는데 도움이 된다. 배열은 바로 생성되지 않고 레퍼런스 변수를 선언한 후 배열 공간을 할당한다. 배열은 자바에서 하나의 객체로 관리된다. 1-1. 레퍼런스와 배열의 차이 레퍼런스가 생성된 후 1-2. 다수의 레퍼런스가 하나의 배열을 참조하는 경우 +) int intArray [] = {2,3,4}; // 이렇게 바로 배열의 값을 초기화하면 배열이 생성된다. (크기 3인 배열 생성) 2. 다차원 배열 2-1. 정방형 배열 각 행의 열 개수가 모두 동일한 배열 2-2. 비정방형 배열 행마다 열 개수가 서로 다른 배열

[Java] 이클립스(Eclipse) 오류 : Code Recommenders cannot download its model repository index_해결못함 ㅠ

Code Recommenders cannot download its model repository index. 1. Eclipse Code Recommenders 란? Recommenders는 소스 코드에 숨겨진 정보를 이용해 Java 개발자가 새로운 API를 사용하고 확장하는 방법을 학습 할 수 있도록 지원한다. 2. 오류 원인과 해결방법 (해결 못함 ㅠ) 이클립스 "windows -> Preferences -> Code Recommenders -> Models"로 들어가면 설치 되어있는 url이 있을 것이다. url로 들어가면 Archived 되어서 "Not found" 창이 뜬다. 많이 이용되지 않아서 보관 됐다는? 뜻 같다. 그래서 archived update sites 를 여기서 확인 할 수 있..

[Java] cmd(명령 프롬포트)로 자바 컴파일, error: A JNI error has occurred 오류

1. 메모장으로 JavaTest.java 생성 public class JavaTest { public static void main(String[] args) { System.out.println("JAVA TEST!"); } } 메모장으로 소스 작성 후 저장! 파일 이름은 클래스 이름 "JavaTest"와 꼭! 일치해야 하고, 확장자는 ".java"로 저장해야 합니다. ex) "JavaTest.java"로 저장 2. cmd(명령 프롬프트) 실행 후 컴파일하기 "javac JavaTest.java" (javac 파일이름.java) //컴파일, JavaTest.class 생성 컴파일해서 JavaTest.class 클래스 파일도 생겼는데 실행이 안된다. Error: A JNI error has occurre..