본문 바로가기

Programming/Programming 알고리즘 연습

(7)
[Kotlin] 문자열 대소문자 변환 및 정렬 작성 목적 문자열 대소문자 변환 및 알파벳 순서대로 정렬시 주의점 기재 주의점 대소문자 변환 및 알파벳 순 정렬시 순서에 따라 결과가 달라지는 현상 발견 정렬 후 대소문자 변환 시 비정상적인 결과 확인 코드 및 결과 정렬 후 소문자로 변환하는 경우 str: String = "Bcad" result: "bacd" 위의 결과를 확인하였을 때 정렬은 대소문자를 구분하며 대문자를 우선정렬 //정렬 후 소문자로 변환 fun changeStr1(str: String): String{ var arr: CharArray = str.toCharArray() var result: String = arr.sorted().joinToString("").lowercase() return result } 소문자 변환 후 정렬하는..
[Kotlin] 이진법 변환 작성 목적 Kotlin 코드 작성중 toBin, toDec를 하게되어 작성 작성 방식 toDec : (자릿수 * 자릿수에 해당하는 제곱값)을 더하는 방식으로 적용 (111 -> (2*2)*1 + (2)*1 + (1)*1) toBin : 숫자의 각 자릿값을 계산하여 1인경우 자릿수에 맞는 값을 곱하여 계산 소스코드 //10진수로 변환 fun toDec(bin: String): Int{ var result: Int = 0 var binNum: Int = bin.toInt() var binCalc: Int = 2 var num: Int = 1 for (i in bin.indices){ if(binNum % 10 == 1){ result += (num * 1) } binNum /= 10 num *= binCal..
Stack 직접 구현하기(Java) Stack이란? - 한 방향에서만 자료를 삽입, 삭제가 가능한 선형구조(LIFO - Last In First Out - 후입선출) 형태의 자료구조 - push(삽입), pop(삭제)을 사용하여 데이터의 추가 및 삭제가 가능 코드 작성 방식 1. 작성할 Stack의 크기를 입력받음 2. 입력받은 크기만큼의 배열 생성 3. 현재 위치를 표기할 index 변수 생성 후 -1로 초기화 3. 반복문을 사용하여 사용자에게서 exit명령을 입력받을 때 까지 반복하여 명령 수행 4. pop 명령 입력시 현재 배열의 인덱스값을 출력한 후, null로 초기화 - Exception 발생시, 인덱스의 범위관련 예외이므로 StackUnderflow 발생 메시지 출력 5. push 명령 입력시 현재 배열의 인덱스 값에 1을 더한..
정수형태 문자열 변환(String->int, int->String) 문제 설명 => 문자열을 입력받고, 입력받은 문자열을 int형으로 변환 => int형으로 변환된 내용을 다시 String형으로 변환 코드 작성 방식 1. 사용자에게 정수형태 문자열을 입력 받음 2. 입력받은 문자열을 strToInt 메소드에 반환 3. 문자열을 char형 배열에 나누어 입력 4. 잘못된 값이 입력되었는지 확인하고, 정수형태라면 정수로 변환 5. char형 배열의 크기만큼 4번 과정을 반복하며 계산 -> for( ; ; x) 형태에서 x의 위치에 2개의 증감식을 입력하는 것도 가능 6. 결과값 리턴 및 출력 7. 위의 결과값을 매개변수로 intToStr메소드 호출 8. 매개변수를 10으로 나눈 나머지를 구하고 문자열 변수에 더하고, 매개변수를 10으로 나눔 9. 매개변수가 0보다 클경우 8..
피보나치 수열(재귀O) 문제 설명 => 피보나치 수열의 갯수를 입력받고, 합계, 전체 수열을 열거하시오 => 피보나치 수열은 이전 값과 현재 값을 더한 결과가 다음 값이 되는 수열입니다.(첫수열 값은 1입니다) ex) 5번째 피보나치 수열을 구하시오 1번째 : 1 / 2번째 : 0 + 1 = 1 / 3번째 : 1 + 1 = 2 / 4번째 : 1 + 2 = 3 / 5번째 : 2 + 3 = 5 그러므로 5번째 피보나치 수열의 값은 5입니다. 코드 작성 방식 1. 피보나치 수열 갯수를 입력받음 2. 수열의 갯수만큼 반복되는 for문 작성 3. 반복문 내에서 fibo 메소드 호출 4. fibo의 매개변수가 0또는 1일 경우 해당 값을 반환 5. 2이상일 경우 fibo(num-1) + fibo(num-2)를 반환 -> num이 0또는 ..
피보나치 수열(재귀X) 문제 설명 => 피보나치 수열의 갯수를 입력받고, 해당 수열의 마지막 값과 합계, 전체 수열을 열거하시오 => 피보나치 수열은 이전 값과 현재 값을 더한 결과가 다음 값이 되는 수열입니다.(첫수열 값은 1입니다) ex) 5번째 피보나치 수열을 구하시오 1번째 : 1 / 2번째 : 0 + 1 = 1 / 3번째 : 1 + 1 = 2 / 4번째 : 1 + 2 = 3 / 5번째 : 2 + 3 = 5 그러므로 5번째 피보나치 수열의 값은 5입니다. 코드 작성 방식 1. 피보나치 수열 갯수를 입력받음 2. 갯수만큼의 크기를 가진 배열 선언 3. 0보다 작은 갯수는 없으므로 예외 메시지 출력 및 return 4. 1개 일경우 초기값이 1이므로 1 반환 5. 2개 이상일 경우 현재 배열의 -2값과 -1값을 더해 현재 ..
진법 변환(2, 8, 16진수) 문제 설명 => 정수를 입력받고, 입력받은 정수의 2진수, 8진수, 16진수 결과값 출력 코드 작성 방식 1. 사용자에게 정수값을 입력 받음 2. 진법 변환할 conversion 메소드에 입력받은 값을 매개변수로 전달 3. 정수 외의 값이 입력되었을 경우 정수변환시 Exception이 발생할 수 있으므로 안내문구 및 예외처리 4. 정상값 입력시 입력값을 정수형 변수 num에 대입 5. num의 값을 2 or 8 or 16으로 나눈 나머지를 각String 변수에 넣고, 몫을 다시 num 변수에 대입 6. num의 값이 0이 될때까지 5번의 과정을 반복 7. 결과값 출력 8. 16진수의 경우 10~15의 숫자를 A~F로 치환할 필요가 있으므로 hex메소드의 switch구문을 통해 치환하여 출력 메소드 설명 ..