전체보기
-
golang 클로저, 생성자Go lang 실습 2021. 8. 14. 22:13
클로저의 일반적인 형태 package main import "fmt" func test() func(int) int { a := 0 addOne := func(x int) int { a += x return a } return addOne } func main() { t := test() fmt.Println(t(1)) // 1 fmt.Println(t(1)) // 2 fmt.Println(t(2)) // 4 } test 함수 안의 a와 addOne를 묶어서 클로저라고 한다. addOne 함수 밖에 있는 변수 a를 함수 내에서 사용했다. 이런 함수와 변수 세트를 클로저 라고 한다. (closure: 닫힘) 재미있게도 a가 사라지지 않고 계속 기억된 상태이다. 이를 이용해서 생성자를 만들 수 있다. pac..
-
위클리 챌린지 2주차 상호평가코딩 테스트/Level 1 2021. 8. 14. 16:05
https://programmers.co.kr/learn/courses/30/lessons/83201 코딩테스트 연습 - 2주차 [[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD" programmers.co.kr 파이썬 def solution(scores): answer = "" for i, score in enumerate(map(list, zip(*scores))): if score.count(score[i]) == 1 and (score[i] == min(score) or score[i] == max(sc..
-
위클리 챌린지 1주차코딩 테스트/Level 1 2021. 8. 14. 14:52
https://programmers.co.kr/learn/courses/30/lessons/82612 코딩테스트 연습 - 1주차 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이 programmers.co.kr def solution(price, money, count): return 0 if (n := money - price * (1 + count) * count / 2) > 0 else -n def solution(price, money, count): return 0 if (n := price * (1 + count) * count / 2 - mone..
-
golang: slice & arrayGo lang 실습 2021. 8. 12. 08:15
go는 call by value만 지원합니다. call by reference와 비슷하게 쓰려면 포인터 값을 전달하면 됩니다. array는 당연히 call by value 방식으로 작동합니다. 그것만 지원하니까요.. package main import "fmt" func addOne(arr [4]int) { for i := range arr { arr[i]++ } fmt.Println("addOne:", arr) } func main() { a := [4]int{1, 2, 3, 4} addOne(a) fmt.Println("main:", a) } addOne: [2 3 4 5] main: [1 2 3 4] 상식적입니다. 위에서 언급한데로 포인터를 이용해서 call by reference 비슷하게 사용해 ..
-
golang: sliceGo lang 실습 2021. 8. 8. 23:41
슬라이스는 간단해 보이지만 c언어의 포인터 개념이 없다면 꽤 헛갈릴 수도 있을 것 같다. package main import "fmt" func main() { nums := []int{1, 2, 3, 4, 5} slice1 := nums[:4] fmt.Println(slice1) // [1,2,3,4] slice1[3] = 6 fmt.Println(slice1) // [1,2,3,6] fmt.Println(nums) // [1,2,3,6,5] slice1 = append(slice1, 0) fmt.Println(slice1) // [1,2,3,6,0] fmt.Println(nums) // [1,2,3,6,0] } 상식적이다. 1~5까지 nums 슬라이스를 만들고, 이중에 4개만 slice1이 '참조(같..
-
Fibonacci closure (피보나치 클로저)Go lang 실습 2021. 7. 30. 15:42
클로저를 이용해 피보나치 수열을 출력해 봅시다. package main import "fmt" func fibonacci() func() int { a, b := 0, 1 return func() int { a, b = a+b, a return b } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } } 0 1 1 2 3 5 8 13 21 34
-
거리두기 확인하기코딩 테스트/Level 2 2021. 7. 22. 07:45
https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr level 2 답게... def solution(places): return [f(plac..
-
2개 이하로 다른 비트코딩 테스트/Level 2 2021. 7. 20. 10:22
https://programmers.co.kr/learn/courses/30/lessons/77885 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr solution = lambda numbers: [(num + 1) if (num % 2 == 0) else (num + (num ^ (num + 1) + 1) / 4 + 0.5) for num in numbers] def solution(numbers): return [(num + 1) if (num % 2 == 0) else (num + (num ^ (num + 1) + 1) / 4 + 0.5) for num in numbers] def solution(numbers): answer = [] for num in numbers:..