일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OSI
- Stack
- windosws wbcs
- 암호수학
- War Game
- C
- 자료구조
- web
- 재귀
- 미로 탐색 알고리즘
- 정렬 알고리즘
- 스택
- pwnable.kr
- PHP
- level13
- 백준
- 파이썬
- HTML
- ftz
- 시간복잡도
- LoB
- 파일 시스템
- Java
- SWiFT
- c언어
- windosw 문자열
- System
- 두근두근 자료구조
- 큐
- ftz level13
- Today
- Total
목록Programming/Algorithm & Data Structure (60)
나의 기록, 현진록
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. 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..
코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 오랜만에 해서 감이 많이 떨어진 것 같다... 처음에 성공했을 때는 코드가 가독도 힘들도 지저분한 느낌이 들었다. 다른 사람들의 풀이를 보고 딕셔너리를 충분히 이용하여 코드 수를 줄이고 가독성을 늘릴 수 있었다. import Foundation func solution(_ id_list:[String], _ report:[String], _ k:Int) -> [Int] { var reportedNameCount = [String : Int]() // id..
코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 문제풀이 정신차리고 문제만 제대로 보고 그대로 코딩하면 된다. 문제 보고 그대로 코딩해라..... 출력 결과는 제대로 나오나 제출 시 통과하지 못하였는데 문제가 되는 부분은 다음과 같다. return "("+recursion(v)+")"+u.joined() 위와 같이 해야 하는데 return "("+u.joined()+")"+recursion(v) 이처럼 하였다. 출력 결과는 문제 없는 것 같은데 결과적으로 문제를 제대로 보고 그대로 코딩하면 된다... 만약 문제..
코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 문제풀이 스택을 이용하면 O(n)으로 해결 할 수 있다. 정확성과 효율성이 나뉘는 문제인데 정확성은 해결됐지만 효율성은 여러 시도가 있었다. 문자열을 배열 형태로 바꿔주는 방식도 map을 이용하면 시간초과가 난다. Array(s)를 이용하니 효율성도 해결되었다. 코드 import Foundation func solution(_ s:String) -> Int{ let sArr = Array(s) var stack = [Character]() for i..
코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 문제풀이 행렬 문제로 2차원 배열의 인덱스를 잘 고려하며 해결해야한다. 딱히 문제 풀이라고 할 것이 없고, 대신 고려할 점이 몇 가지 있다. 내가 문제를 풀면서 문제를 해결한 방법이다. 1. row [Int] { var map = Array(repeating: Array(repeating: 0, count: columns+1), count: rows+1) var result = [Int]() for i in 1...rows{ for j in 1..
코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 문제풀이 빗선을 지나는 사각형의 갯수를 구하는 공식을 사용하는 문제다. 빗선을 지나는 사각형의 갯수 = 가로 + 세로 - 최대공약수(가로, 세로) 정답은 (가로 * 세로) - (가로 + 세로 - 최대공약수)로 구할 수 있다. 코드 import Foundation func gcd(up: Int, down: Int) -> Int{ var up = up var down = down while down != 0{ let r = up % dow..
코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제풀이 command는 Enter, Leave, Change 세 가지를 의미한다. 1. command와 Id를 sequence 배열에 저장하며 동시에 Id와 nickName을 딕셔너리로 저장 2. 1번 과정이 끝나면 sequence에 command와 Id에 해당하는 딕셔너리 값을 조합하여 배열에 저장한다. 코드 import Foundation func solution(_ record:[String]) -> [String] { var sequence = [[St..
코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 문제풀이 이진트리와 같이 배열로 주어진 모든 수를 완전 탐색할 수 있도록 하였다. 텍스트로 표현하기에 가시성이 떨어지지만 다음과 같다. 4 1 2 1 -1 -2 1 -1 -1 2 1 -1 -2 1 -1 같은 논리를 가진 코드인데 채점 시 한 개의 케이스에 대하여 시간초과였는데 코드를 수정하니 통과되었다. 블로그 포스팅할 때 실행결과 캡처를 위해 다시 채점해보니 통과되었다. 뭐지 코드 시간초과 코드 import Foundation func ..