2023. 12. 6. 20:17ㆍ스파르타/개발일지
안녕하세요 !
네번째 개발일지 시작합니다.
https://school.programmers.co.kr/learn/challenges/beginner?order=acceptance_desc
Kotlin 을 이용해 하루 1시간씩 코딩테스트 4문제 해결하기 수행 완료 !
아침 9시부터 10시까지 진행되는데
아침이라 정신이 맑은 탓인지, 코딩테스트 난이도가 수준에 맞는 건지 ㅎㅎ.
아마 후자는 아닐 듯 한데 ,, ㅠ
오후 7시에는 알고리즘 특강도 듣고 질의응답 시간도 가졌다.
여러모로 도움이 많이 된다~
[프로그래머스] 숫자 비교하기 문제 풀이
[프로그래머스] 두 수의 합 문제 풀이
[프로그래머스] 두 수의 나눗셈 문제 풀이
[프로그래머스] 각도기 문제 풀이
* 각도기 같은 경우에는 처음 조건문 if 가 익숙해서 if 문으로 사용했으나
강의에서 배운대로 when으로 바꿔 사용했더니 가독성이 더 좋아졌다.
또한 다른 각도에서는 별다른 조건이 제시되지 않아서 0이라는 값을 주게 했다.
코틀린 (Kotlin) 문법 기초 3주차 강의 정리 내용
코틀린 (Kotlin) 메소드 (Method) 선언하기
코틀린 메소드 구조를 살펴보자.
fun 메소드이름(변수명:자료형, 변수명:자료형 ....) : 반환자료형 {
소스코드 로직
코틀린에서는 메소드를 선언할 때 fun이라는 키워드를 사용한다.
아래 3가지 예시를 통해서 더 자세히 알아볼 수 있었다.
예시 코드 1
두 개의 숫자를 더하는 메소드를 만들고, 전달하는 숫자에 따라 덧셈결과를 알려줘요
- sum 메소드는 매개변수 num1과 num2를 요구한다.
- 필수로 매개변수를 넣어줘야 호출할 수 있다.
fun main() {
var num1 = readLine()!!.toInt()
var num2 = readLine()!!.toInt()
// sum이라는 이름의 메소드를 호출!
sum(num1, num2)
}
fun sum(num1:Int, num2:Int) {
var result = num1 + num2
println("num1과 num2의 덧셈결과는 ${result}입니다.")
}
예시코드 설명
fun main() {
fun main() 이라는 메인 함수를 선언한다.
var num1 = readLine()!!.toInt()
var num2 = readLine()!!.toInt()
num 이라는 변수 안에는 내가 키보드로 입력한 숫자한 숫자가 들어가는데
숫자로 변환된 입력 값은 변수로 각각 num1 과 num2에 들어가게 된다.
// sum이라는 이름의 메소드를 호출!
sum(num1, num2)
}
여기서 말하는 sum이란 더하는 코드를 넣을 메소드를 말한다.
호출한 sum 메소드 안에는 num1, num2를 넣는다.
fun sum(num1:Int, num2:Int) {
sum이라는 함수를 선언한다. 함수 이름은 변경해도 된다.
외부에서 받아온 num1:Int, num2:Int 에 값을 넣어서 호출하라는 의미다.
var result = num1 + num2
외부에서 num1 값과 num2 값을 주면,
num1 과 num2 를 더하는 num1 + num2 을 var result 라는 변수에 넣는다.
println("num1과 num2의 덧셈결과는 ${result}입니다.")
}
마지막으로 result 변수를 출력한다.
예시코드 실행 결과
num1 에는 10 을 입력했다.
num2 에는 20 을 입력했다.
num1 과 num2의 합
즉, 두 수의 합은 30이라는 덧셈 결과를 알려준다.
반환자료형이 없는 경우
fun 메소드이름(변수명:자료형, 변수명:자료형 ....) : 반환자료형 {
소스코드 로직
메소드의 구조에는 반환자료형이 있으나
아래 예시 코드2처럼 반환자료형이 없는 경우에는 Unit으로 명시하거나 생략할 수 있다.
예시 코드 2
오늘의 정보를 알려주는 메소드를 만들어요
fun main() {
// displayInfo라는 이름의 메소드를 호출!
displayInfo()
}
fun displayInfo() : Unit {
println("오늘의 날씨는 화창합니다")
println("오늘은 검정색을 조심하세요")
}
예시코드 설명
fun main() {
fun main() 메인 함수를 지정해주고
// displayInfo라는 이름의 메소드를 호출!
displayInfo()
displayInfo라는 메소드를 호출한다.
fun displayInfo() : Unit {
displayInfo라는 함수를 만들고
println("오늘의 날씨는 화창합니다")
println("오늘은 검정색을 조심하세요")
위 코드를 실행한다.
메소드 실행 후의 결과를 메인 함수로 리턴하기 위해서 Unit 을 사용한다.
여기서 Unit 은 생략 가능하다.
예시코드 실행 결과
displayInfo 함수 안에 있는 코드가 실행된 것을 볼 수 있다.
예시 코드 3
수학점수를 입력받아 등급을 출력해주는 프로그램을 학생들에게 전달했어요
- checkRank메소드는 매개변수로 score를 요구해요
fun main() {
var myMathScore = readLine()!!.toInt()
var myRank = checkRank(myMathScore)
println("나의 등급은 : ${myRank}")
}
fun checkRank(score:Int) : String {
return when(score) {
in 90..100 -> return "A"
in 80..89 -> return "B"
in 70..79 -> return "C"
else -> return "D"
}
}
// Kotlin 컨벤션을 따르지 않은 형태
// if(score >= 90) {
// return "A"
// } else if(score >= 80) {
// return "B"
// } else if(score >= 70) {
// return "C"
// } else {
// return "D"
// }
// }
예시코드 설명
fun main() {
var myMathScore = readLine()!!.toInt()
메인함수를 선언하고,
myMathScore 에는 입력한 숫자 값이 변수로 들어간다.
var myRank = checkRank(myMathScore)
println("나의 등급은 : ${myRank}")
}
checkRank(myMathScore) 라는 결과를 myRank로 대입한다.
checkRank(myMathScore) 가 결과값이 되기 위해서는
fun checkRank(score:Int) : String {
checkRank 라는 메소드를 호출하고
파라미터(score:Int) score 점수를 checkRank(myMathScore) 로 넘겨준다.
return when(score) {
in 90..100 -> return "A"
in 80..89 -> return "B"
in 70..79 -> return "C"
else -> return "D"
}
}
myRank 에는 실행 후에 return 값이 들어가게 된다.
기존에 사용하던 if 문을 코틀린에서는 when 으로 바꾸었다.
90..100 일 때는 A 값을 리턴하고,
80..89 일 때 는 B 값을 리턴하고,
70..79 일 때는 C 값을 리턴하고,
나머지는 D 값을 리턴한다.
예시코드 실행 결과
89 라는 숫자를 입력했더니
B 라는 값이 리턴된 것을 확인할 수 있었다.
오늘까지 3주차 강의는 전부 수강했지만
개인 과제 완료 후에 다시 3주차 강의를 복습해야 할 것 같다.
아직 머릿속이 새하얗다,,,,,
'스파르타 > 개발일지' 카테고리의 다른 글
개발일지 12월 8일 (0) | 2023.12.10 |
---|---|
개발일지 12월 7일 (1) | 2023.12.07 |
개발일지 12월 5일 (1) | 2023.12.06 |
개발일지 12월 4일 (2) | 2023.12.04 |
개발일지 12월 1일 (0) | 2023.12.04 |