일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- c언어
- ftz
- 파이썬
- windosw 문자열
- ftz level13
- web
- War Game
- 큐
- 미로 탐색 알고리즘
- 자료구조
- 두근두근 자료구조
- 백준
- OSI
- SWiFT
- windosws wbcs
- 암호수학
- 재귀
- Stack
- C
- level13
- HTML
- pwnable.kr
- 정렬 알고리즘
- 스택
- LoB
- PHP
- System
- 시간복잡도
- 파일 시스템
- Java
- Today
- Total
목록Programming (130)
나의 기록, 현진록
풀이 0부터 d만큼의 이중 포문으로 구현을 했으나 d의 최댓값이 백만이면 시간 복잡도가 백만의 제곱이 되어버린다...시간초과 발생 점의 위치가 거리 d 만큼의 길이 내에 있어야 한다. 피타고라스 정의 d^2 = x^2 + y^2 를 이용하면 두개만 알면 나머지 하나를 구할 수 있다. d는 기본 값으로 주어지고 x는 포문으로 값을 받으면 단일 포문으로 y를 구할 수 있게 된다. sqrt(d^2 - x^2)은 y의 최댓값이 되고 y또한 k의 배수이기 때문에 k만큼 나누어 갯수를 구한다. 코드 func solution(_ k:Int, _ d:Int) -> Int64 { var count: Int64 = 0 let result = d * d for i in stride(from: 0, through: d, by..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 물(0)을 기준으로 칼로리가 높은 순부터 양쪽에 음식을 배치하는 방법으로 구현하였다. 문자열.insert()에 Character 형이 들어가야 하고 Int 형이 Character 형으로 바로 변환이 되지 않기 때문에 Int -> String -> Character 순으로 바꾸었다. 코드 func solution(_ food:[Int]) -> String { var str = "0" for (index, count) in food[1..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr places 행 길이 == 대기실의 수 places 열 길이 == 대기실 세로 길이 places 원소의 길이 == 대기실 가로의 길이 P == 응시자, O == 빈 테이블, X == 파티션 각 대기실 마다 2차원 배열로 표현하기 상하좌우 4방향 처음에 어렵게 접근 했던 것 같다. "P"위치를 발견하면 상하좌우 2칸 대각선 1칸씩에 P가 있는지 "탐색"하는 방법으로 문제를 해결하려고 했었다. (X를 만나면 continue.....) 그러나 이렇게 하면 8개의 방향(상하좌우, 네 방향 대각선)으로 인덱스를 처리해..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분리하기 - str1과 str2 두글자씩 분리하기 대문자 또는 소문자 변환, 공백, 숫자, 특수문자, 두글자로 분해 분리된 str1과 str2으로 Set를 만들어 중복 없는 집합을 만듦 분리된 집합의 각 요소마다 str1, str2에 포함된 갯수를 구함 두 집합(str1, str2)에 포함된 갯수가 같을 경우, 다를 경우 교집합과 합집합에 추가할 요소가 다르게 구현 갯수가 같을 경우 교집합, 합집합에 갯수만큼 추가 갯수가 다를 경우 각 집합의 포함된 갯수의 최솟값 만큼은 교집합, 최대값 만큼 합집합에 추가 교..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr orders의 주문마다 메뉴를 조합할 수 있는 모든 경우의 수를 구해야 한다. 조합한 메뉴의 수가 course에 포함된 수일 경우의 갯수를 세어 저장한다. (아래 코드는 딕셔너리를 사용하였음) 모든 경우의 조합을 만들기, 오름차순으로 정렬, 중복(AB와 BA)처리를 주의하자 import Foundation func solution(_ orders:[String], _ course:[Int]) -> [String] { var records = [[String]:Int]() var result = [String]..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 실패율을 저장할 스테이지 튜플 배열 생성 [(스테이지 번호, 실패율)] 현재 스테이지 클리어한 사람 구하기 현재 스테이지인 사람 구하기 = 전체 스테이지 수에서 현재 스테이지 클리어한 사람 빼기 실패율(스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수) 구해서 튜플 배열에 추가 스테이지 번호를 실패율 내림차순으로 정렬한다. 만약 실패율이 같으면 스테이지 번호가 낮은 게 우선순위이다. 코드 처음 작성한 정답 제출 시 5, 9, 22번이 시간초과가 발생하였다. i..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 1. 키패드에서는 10(0~9)개의 숫자만 표현하기 때문에 딕셔너리로 숫자마다 좌표를 정의했다. 2. numbers의 각 요소가 1, 4, 7에 해당하는 경우는 왼손이며, 왼손의 현재 위치를 수정하고, 3, 6, 9에 해당하는 경우 오른손이며, 오른손의 현재 위치를 수정한다. 3. numbers의 각 요소가 2, 5, 8 ,0에 해당하는 경우 왼손의 위치와 오른손의 위치를 숫자와의 위치와 비교하여 거리를 구한다. 이 때 거리는 |(x1 - x2)| + |(y1 - y2)|이다. 4. 만약 왼손으로부터..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 정답으로 채점된 코드가 너무 지저분하다고 생각했다. 이 코드는 문자열 내에 숫자만 있을 때까지 문자열을 숫자로 바꾸는 코드이다. func solution(_ s:String) -> Int { let dict = ["zero","one","two","three","four","five","six","seven","eight","nine"] var str = s while str.range(of: "[a-z]", options: .regularExpression) != nil{ if let word = di..
코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr swift는 파이썬처럼 문자열을 다루기 쉽지가 않다. 어느 정도 익숙해졌긴 하지만 이번엔 문자열 검사에 대한 문제이기 때문에 헷갈렸다. 정규표현식에 대해 공부를 할 필요가 있어보인다.... 문제 풀이는 문제에 제시된 조건을 그대로 따라하기만 하면 되는데 이를 어떻게 swift로 처리하느냐의 문제인 것 같다. 아래는 정답처리된 내가 작성한 코드이다. import Foundation func solution(_ new_id:String) -> String {..
코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 풀이 1. 먼저 0의 갯수를 파악한다. 2. 0을 제외한 번호 중 당첨 번호 갯수를 파악한다. 3. 최고 순위 = 당첨 번호 갯수 + 0의 갯수, 최저 순위 = 당첨 번호 갯수이다. 풀어봤던 프로그래머스 코딩테스트 연습 level1 문제 중 가장 쉬운 것 같다. 코드 import Foundation func winRank(num: Int) -> Int{ switch num{ case 6: return 1 case 5..