분류 전체보기
[백준] 2583번 - 영역 구하기 (DFS / BFS)
오늘은 문제를 보자마자알 수 있는 DFS, BFS 분류의 문제를 풀어보았습니다. 오랜만에 풀어서 조금 감을 잃었는지 조금 헤매면서 풀었던 것 같네요 😅 바로 풀이 보시죠!!! 1. 문제 https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 2. 풀이 문제 입력부터 확인하면, 첫번째 줄에 세로, 가로, K 를 입력하고 (K는 모눈종이의 직사각형의 개수) 두번째 줄부터 직사각형의 꼭짓점 좌표를 하나씩 입력받습니다. 문제에서 해당 직..
[Python] 리스트의 모든 최댓값의 인덱스 구하기
파이썬에서 리스트의 최댓값을 구하는 코드는 max 연산자만 붙이면 간단히 사용할 수 있다. 그렇지만, 리스트에서 최대값이 여러개라면 여러개를 모두 리턴하는 것이 아닌 리스트에서 가장 앞에 있는 값이 리턴된다. 다음 배열에서 최댓값인 4는 4번째와 7번째에 위치해있지만 출력해보면 3만 출력 되는 것을 확인할 수 있다. list_num = [1,2,3,4,3,2,4] print(list_num.index(max(list_num)) + 1) #4 그렇다면, 모든 최댓값의 인덱스를 구하려면? 값을 하나하나 비교해보면 된다! 첫번째 방법은 간단하게 for 문을 이용해서 구할 수 있다. list_num = [1,2,3,4,3,2,4] answer = [] for i in range(len(list_num)): if..
[프로그래머스] 연습문제 - 나누어 떨어지는 숫자 배열
오늘은 기초부터 다지기 위해 간단한 수학 연산 문제를 풀었습니다! https://programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 첫 시도는 생각 나는대로 코드를 작성하다보니 길게 작성했는데, def solution(arr, divisor): answer = [] for v in arr: if v % divisor != 0: continue answer.ap..

[Python] itertools 주요 클래스 (permutations, combinations ... )
오늘은 python 에서 반복적인 데이터를 처리하는 기능을 가진 itertools 라이브러리의 주요한 클래스에 대해 알아봅시다. 저는 java로 먼저 코테 문제를 풀다가 python 으로 언어를 변경했는데, 이 때 python의 가장 강력한 장점 중 하나가 바로 이러한 모듈들을 직접 구현하지 않고 라이브러리를 사용만 하면 간단히 구현할 수 있다는 점인 것 같아요! iterable 객체를 가지고 주로 사용하는데, 이 때 iterable은 반복 가능한 List, Dictionary, Tuple 자료형 같은 객체를 말합니다. permutations 1. 단어의 뜻 먼저 사용하기 전! permutation 사전적 정의가 무엇일까요? "순열" 서로 다른 원소를 가진 집합에서 대상을 선택하여 순서있게 배열하는 것을..

[프로그래머스] 2020 KAKAO 인턴십 (Lv1) : 키패드 누르기
오늘은 2020년 카카오 인턴십 문제였던 "키패드 누르기" 문제를 풀어보았습니다. 1레벨임에도 비교적 다른 카카오 기출 문제 보단 시간이 필요했던 문제였던 것 같습니다. (저만 그런가요? 😅) 살짝 수학적인 계산이 필요한 조건이 있었는데, 거기서 약간 시간이 소요된 것 같습니다. 먼저 문제의 조건을 살펴볼까요? 1. 문제 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]..

[Python] bisect_left, bisect_right
안녕하세요! 오늘은 python 이 기본 제공하는 이진 탐색 알고리즘을 구현한 bisect 모듈에 대해 알아보겠습니다. 1. 이진 탐색 먼저 이진 탐색이란 탐색 범위를 절반씩 좁혀나가면서 데이터를 탐색하는 알고리즘 입니다. 특히 데이터가 정렬된 상태일 때, 우수한 성능으로 탐색 합니다. 예를 들어 [1, 2, 3, 4, 5, 6, 7, 8, 9] 이라는 배열에서 Target = 3이라면 1. Middle 값을 기준으로 Target 값이 작은지 큰지 비교합니다. 2. 5 (Middle) > 3 (Target) : 기준 값보다 작으므로 5보다 큰 값들은 비교하지 않고 작은 값 들만 비교합니다. 3. [1, 2, 3, 4] 배열의 중간 값을 기준으로 또 비교를 하는데 4. 여기선 3이 middle이라 치면 t..

[Swift] inout parameter
함수 내의 매개변수 이름은 변경할 수 없다. 예를 들어 이렇게 코드를 작성하여 매개변수 name을 변경하려고 하면 name은 let 이기 때문에 변경할 수 없다는 에러가 발생한다! 함수 내의 매개변수 기본형은 let 인 것을 알 수 있다. 그래서 inout 키워드를 이용해서 변경이 가능한데, 사용 방법은 1. 매개변수의 자료형 앞에 inout 키워드를 붙이고 2. 변경할 값을 var 변수에 담은 다음에 3. 메소드를 호출 할 때 &를 변수(var 에 담은)에 넣어사용한다. 바뀐 매개변수 이름으로도 잘 출력 되는 것을 확인 할 수 있다. 이 Inout 키워드는 오픈소스를 활용할 때 종종 사용 있으니 알아두자!! * 학습영상 : https://www.youtube.com/watch?v=ge5BLzaTo8g&..

[UIKit] UserDefault로 데이터 저장하기
UserDefault를 사용하면 데이터 값이 plist에 값이 저장되어 영구적으로 사용 가능하다. 애플에서 공식문서를 보면 Key - Value로 구성되어 있는 Dictional 형태의 저장소임을 알 수 있다. 간단하게 값을 저장하고 불러오는 것이 가능하지만 plist에 저장되기 때문에 보안상 취약하다는 단점도 있다. 공식 문서 : https://developer.apple.com/documentation/foundation/userdefaults import UIKit let defaults = UserDefault.standard //선언 defaults.set(0.24, forKey: "Volume") //float defaults.set(true, forKey: "On") //bool defaul..

[Swift] 타입 캐스팅(Type Casting) - in / as 키워드
오늘은 타입 캐스팅에 관련해서 공부를 해보았다. 타입캐스팅은 두 연산자를 이용해서 사용한다. - is 연산자를 사용해서 인스턴스의 타입을 확인 - as 연산자를 사용해서 같은 계층에 있는 다른 슈퍼클래스나 서브클래스로 취급하는 방법 예를 들어 Animal이라는 슈퍼클래스가 선언되어 있고, Human과 Fish라는 Animal을 상속받고 있는 서브클래스가 있다. 슈퍼클래스 Animal은 이름 변수를 가진 생성자를 하나 갖고 있고 각 서브클래스에는 고유의 함수를 하나씩 갖고 있다고 해보자. class Animal { var name: String init(n: String){ name = n } } class Human: Animal { func code() { print("Tying away...") } ..
[Python] 2019 KAKAO BLIND RECRUITMENT - 오픈채팅방
문제 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제가 길어서 어려워보일 수 있겠지만, 어렵다기 보단 친절한 문제인 것 같다. 채팅방에 들어왔다가 나갔을 때 기록이 남으며, 닉네임이 바뀌는 경우는 2개의 경우 인데 1. 채팅방을 나갔다가 똑같은 닉네임으로 다시 들어오는 경우 (이전 기록에도 이름이 변경됨) 2. 채팅방에서 닉네임을 변경하는 경우 처음 시도는 기록이 남겨질 때마다 Enter, Leave, ..