Problem Solving34 [알고리즘] 재귀함수(Recursive function) 정리 & 문제 풀이(Python) 재귀함수 : 함수 안에서 자신의 함수를 다시 호출하는 방식 - 재귀, 즉 자기호출은 어떤 문제를 해결하는 과정에서 자신과 똑같지만 크기가 다른 문제를 발견하고 이들의 관계를 파악함으로써 문제 해결에 접근하는 방식이다. 재귀함수의 장점 - 반복문을 대신해서 재귀함수로 사용하게 되면 보다 간결한 코드 작성이 가능해진다. 재귀함수의 단점 - 연산이 느리다.(많은 연산을 필요로 한다는 얘기) - 재귀함수의 단점으로 인해 현재 실무에서는 거의 사용하지 않는다고 함. - 재귀함수 단점 보안으로 동적프로그래밍 사용 def recursive(): print("재귀함수") recursive() recursive() # 함수 호출 재귀함수를 사용할 때 가장 중요하게 봐야하는 것은 "탈출조건"이다. 위 코드와 같이 탈출조건.. 2022. 1. 13. [파이썬] 03. 자료형(정수, 실수, 논리형, 문자열) 1. 자료형 (1) 기본 자료형(정수형, 실수형 변수) 기본 자료형 (정수형 변수를 2진수, 8진수, 16진수 형태로 표현) (2) 부울자료형(논리형) 부울자료형(논리형)은 다른 자료형과 달리 True 또는 False값만 사용가능 boolean: 참(1)/거짓(0) 참(True), 거짓(False)를 나타내는 불(bool) 자료형이 있다. 할당은 '=' 우리가 아는 '같다' 등호는 '==' 비교 연산자를 이용해 논리형 데이터를 표현 (3) 문자열 문자열(String)은 글자를 표현하는 자료형 문자열 객체는 따옴표(' ' 또는 " ")를 통해 표현 가능 어떤 따옴표를 쓰는지 상관없지만 짝이 맞아야함! split(): 문자열의 공백을 기준으로 문자열을 나누어주는 함수 find(): 문자열을 검색 후 해당하는.. 2021. 9. 19. [파이썬] 02. 변수(변수 선언, 여러가지 변수 생성 방법) 1. 변수 변수란 프로그래밍에서 데이터를 저장하는 공간이다. # 변수의 예 a = 'python' # 문자열 변수 b = 123 # 정수형 변수 c = 1.2 # 실수형 변수 d = ['a', 'b'] # 문자열 리스트 e = {'name': 'lee'} # 문자열 사전 변수를 활용하면 한 번 지정한 값을 여러 번 재사용할 수 있으므로 코딩하기가 편하다. 변수를 어떠한 값으로 지정하는 것을 파이썬에서는 선언(assing)이라 하며 다음과 같이 '=' 부호를 사용한다. 2. 변수 선언 변수의 이름은 마음대로 지정 가능하다. 다만 띄어쓰기는 인식이 불가능하다. 파이썬에서는 보통 언더바 _ 혹은 대문자로 띄어쓰기를 대체한다. 또한, 한 번 선언한 변수의 값은 다시 선언 기호 = 를 사용하여 다른 값으로 업데이.. 2021. 9. 19. [파이썬] 01. 기본문법(들여쓰기, 주석, 세미콜론) 1. 들여쓰기 코딩을 할 때, 가독성을 위해 들여쓰기를 한다. 하지만 파이썬에서는 문법적인 강제사항이다! 코드 블럭을 구성하기 위해 if, for, class, def 등을 작성하면서 나오는 : 다음 아랫줄은 들여쓰기를 해야한다. 중요한 것은 같은 블록 내에서는 들여쓰기 칸 수가 같아야 한다. 공백과 탭을 섞어 쓰면 안 된다. for i in range(10): print(i) print(i+1) 만약 이를 지키지 않으면 IndentationError: expected an indented block 이러한 에러 구문을 보게된다. 2. 주석문(코멘트) 프로그램의 코드와 실행에 영향을 미치지 않는 문구이다. 3. 세미콜론 많은 언어들이 구문이 끝날 때 ; 을 적는다. 하지만 파이썬은 구문이 끝나고 다음 줄.. 2021. 9. 19. [Java Algorithm] 1-3 문장 속 단어( for each문, split(), indexOf(), substring()) * 문제 설명 문장 속의 각 단어는 공백으로 구분되고 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 문제 (출력: 첫 줄에 가장 긴 단어를 출력하고 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한 단어를 답으로 함.) 예시 입력 1 it is time to study 예시 출력 1 study * 소스코드1 풀기 전 생각) 공백을 기준으로 나누면 되지 않을까? => split() 먼가 생각으로는 처음 나온 공백을 기준으로 앞 글자들을 묶고 공백이 나올 때마다 반복한 다음 그 묶여진 단어들을 배열에 넣어서 비교하면 되지 않을까? 싶음 => String[] arr = str.split(" "); 1. 공백으로 구분된 단어들을 입력받고 2. 해당 단어를 " "으로 spli.. 2021. 8. 16. [Java Algorithm] 1-2 대소문자 변환(대문자는 소문자로, 소문자는 대문자로) // 대문자와 소문자가 같이 존재하는 문자열을 입력받아 // 대문자는 소문자로, 소문자는 대문자로 변환하는 프로그램 // 첫 줄에 문자열이 입력된다. 문자열 길이 100 안 넘음 import java.util.*; public class Practice_02 { public String solution(String str) { String answer = ""; for(char x : str.toCharArray()) { if(Character.isLowerCase(x)) answer+=Character.toUpperCase(x); else answer+=Character.toLowerCase(x); } return answer; } public static void main(String[] args) .. 2021. 8. 15. [Java Algorithm] 1-1 문자 찾기(자바 한 문자만 입력 받기, 대소문자 변환) * 문제 설명 한 개의 문자열을 입력받고, 특정 문자를 입력받은 후 해당 특정문자가 대소문자에 관계없이 문자열에 몇 개 존재하는지 알아내어 출력해주는 문제 * 소스코드 package algorithm; import java.util.Scanner; public class Main { public int solution(String str, char t) { int answer = 0; str = str.toUpperCase(); //string이 대문자로 된다.! t = Character.toUpperCase(t); // t는 문자이기 때문에 Character라는 클래스에서 클래스에 있는 메서드 사용한다. for(int i = 0; i < str.length(); i++) { if(str.charAt(i.. 2021. 8. 14. 이전 1 2 3 4 다음