본문 바로가기

분류 전체보기

(96)
[프로그래머스] 신고 결과 받기 with Python 문제 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 신고자에게 정지당한 유저에 대한 메일 발송 횟수를 리스트에 담아 반환하는 문제 풀이 과정 제한시간이 주어졌으므로 리스트보다는 시간복잡도가 낮은 딕셔너리 사용 신고 중복은 set으로 해결 각 id 별 신고 당한 횟수 저장 K번 이상 신고 당한 사람이 있으면..
[프로그래머스] 달리기 경주 with Python 문제 처음 배열로 선수 리스트가 주어지고, 한 선수가 앞 선수를 추월할 때마다 해설진들에게 호명되며 최종적으로 결승에 들어온 순서대로 선수 리스트를 반환하면 되는 문제 풀이 과정 1. 첫 번째 풀이 def switch(players, index): save = players[index] #호명 된 선수 players[index] = players[index-1] players[index-1] = save return players def solution(players, callings): for calling in callings: players = switch(players, players.index(calling)) return players for 문을 이용하여 호명된 선수를 바꿔주는 방식으로 해결..
[프로그래머스] 개인 정보 수집 유효기간 with Python 문제 - 모든 달은 28일까지 있으며, 약관마다 개인정보 보관 유효기간이 정해져 있고 유효기간이 지나면 파기해야한다. - - today는 문자열, terms(약관 및 유효기간)는 리스트, privacies(개인정보 수집일자 및 약관)도 리스트 - 다음과 같이 문제 풀이에 필요한 정보가 주어지며 개인정보를 파기해야 할 privacies 리스트 인덱스 번호 +1 을 리스트로 반환하면 되는 문제 풀이 과정 모든 달은 28일로 고정되어 있음으로 개인정보 수집일자에 해당하는 달에 유효기간을 더한 뒤 날짜만 하루 빼주면 파기 날짜이므로 금월에 유효기간을 더한 뒤 12월을 넘어가면 +1년 이후 금일에 -1을 해준 뒤 만약 일수가 0일이면 28일로 변경 후 월도 -1 월도 0월이면 12월로 변경 후 년도 -1 코드 d..
[프로그래머스] 신규 아이디 추천 with Python 문제 카카오 아이디 규칙 1. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 2. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 3. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. 순차적 처리 과정 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기( - ), 밑줄( _ ), 마침표( . )를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표( . )가 2번 이상 연속된 부분을 하나의 마침표( . )로 치환합니다. 4단계 new_id에서 마침표( . )가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, ..
[알고리즘] 완전탐색 DFS & BFS 깊이 우선 탐색 (DFS) DFS는 깊이 우선 탐색이라고 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 깊이 우선 탐색(DFS)은 스택 자료구조(또는 재귀 함수)를 이용한다. 완전탐색 방법 중 하나로 모든 경우의 수를 확인해야 할 경우 사용한다. 예를 들어 모든 조합을 확인하여 특정 조합의 개수를 구하는 문제를 풀 때 사용할 수 있다. DFS 탐색 방법 1번 노드부터 시작 접근하지 않은 노드가 있다면 번호가 낮은 노드부터 접근하여 PUSH PUSH(1) -> PUSH(2) -> PUSH(7) -> PUSH(6) Stack = [1, 2, 7, 6] 다음 노드가 없을 경우 접근하지 않은 노드가 연결된 노드가 나올 때까지 POP POP(6) Stack = [1, 2, 7] 이 과정을 반복하..
[Kakao Api] 키 해시 생성 및 플랫폼 등록 윈도우 기준으로 작성 된 방법이므로, Mac 등 다른 운영체제의 방법과는 상이할 수 있습니다. 1. Kakao Developer에 애플리케이션 추가 https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 사이트 상단의 "내 애플리케이션"을 클릭 후 애플리케이션을 추가해준다. 2. 키 해시 생성 준비 과정 카카오 API에서는 사용자 애플리케이션에 등록 된 키 해시를 통해 인증을 하고, API를 호출할 수 있기 때문에 키 해시를 생성 후 등록하지 않으면 카카오 API를 사용할 수 없다. 2-1. open..
[알고리즘] 이진 탐색 이진탐색이란? 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다. 쉽게 말해 up&down 게임과 유사하다고 볼 수 있다. 시작점, 중간점, 끝점을 이용하여 탐색 범위를 설정하는데 탐색할 숫자가 중간점보다 크다면, 중간점보다 작은 수들은 배척시킴으로써 탐색 범위를 줄여나간다. 예제 찾고자 하는 수가 14일 때 - 중간점이 2개일 경우 둘 중 아무거나 해도 상관 없다. 1. 찾고자 하는 수와 중간점을 비교한다. 2. 찾고자 하는 수(14)가 중간점보다 작다면 중간점 아래를, 높다면 중간점 위의 숫자들을 제거해준다. 3. 찾고자 하는 수(14)가 중간점보다 크기 때문에 중간점보다 작은 수들을 제외하면 아래와 같이 남게 된다. 과정 반복 중간점이 찾고자 하는 숫자와 같다면 종료한..
[Kotlin] 문자열 String 해당 포스팅에서는 문자열을 좀 더 세부적으로 알아본다. 문자열에는 다양한 메서드들이 있다. 그 중 자주 쓰이는 메서드들을 알아보도록 하며, 그 외의 메서드들은 아래 링크를 통해 Kotlin 공식 문서에서 참조 바랍니다. https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/ init var string = "초기화" 문자열 사이에 변수 값 1. $변수 2. ${변수} 1번으로 사용하실 경우, 다음 문자열과 띄어쓰기로 구분해야 한다. val data = "20" val string = "저는 ${data}살 입니다." println(string) println("저는 $data살 입니다.") //에러 : 변수명을 data살로 인식하기에 띄어쓰기를 해주어..
[Kotlin] 코틀린 기초 문법 1. val 과 var 및 자료형 // 변하지 않는 값 val a = 0 // 변하는 값 var b = 0 a = 10 오류 발생 b = 10 Kotlin에서는 Java와 마찬가지로 자료형을 선언해 주어야 한다. 형태는 다음과 같다. val a : 자료형 = 값 값을 선언해 주었다면 자료형은 생략해도 상관없다. val a : Int = 0 val b = 0 var string : String = "test" var string = "test 2. 입·출력 및 String템플릿 입력은 readLine(), 출력은 print(), println() 메서드를 사용한다. var name = readLine() print("안녕? 나는 $name 이야!") // 줄 바꿈 x println("안녕? 나는 $name..
[서버 통신] - Http 프로토콜 우리는 하나의 서비스를 제작할 때, 크게 3가지로 나눈다. 1. 사용자들이 직접 접하는 클라이언트 2. 클라이언트로부터 요청 받은 내용을 추려 전달해주는 서버 3. 데이터를 저장하는 데이터베이스 보통은 서버에서 데이터베이스까지 관리하는 경우가 많다. 클라이언트와 서버는 서로 통신을 하여 데이터를 주고 받아야 하는데 이때 사용되는 통신 프로토콜이 Http 프로토콜이다. HTTP 프로토콜이란? Http 프로토콜은 정보(데이터)를 송·수신하도록 설계된 프로토콜이다. 기본적으로 요청과 응답으로 나누어지며, 요청은 클라이언트가 서버에 데이터를 요청할 때 사용되며, 구성 요소는 다음과 같다. 요청 구성 요소 1. 요청 Header Hearder는 클라이언트가 사용하는 브라우저 및 앱, 요청되는 데이터와 같은 핵심 ..