본문 바로가기

ALGORITHM

(71)
[Swift] Lv2.위장 (Dictionary) https://programmers.co.kr/learn/courses/30/lessons/42578?language=swift 코딩테스트 연습 - 위장 programmers.co.kr 아무 생각없이 c++ 처럼 풀다가 아 Swift 인데 값이 없을 땐 Int 값을 더해주지 못하는구나.. nil 이니까 당연하지 라는 생각으로 무지성 코딩으로 for문과 if 문으로 풀었습니다.. 절대 이거보다 더 이쁘게 코드를 짤 수 있겠다 싶어서 다른사람들의 풀이를 보면서 반성과 깨달음을.. 전체코드 import Foundation func solution(_ clothes:[[String]]) -> Int { var result = 1 var clothesDict: Dictionary = [:] for cloth in..
[Swift] 2941 크로아티아 알파벳 (replacingOccurrences 함수) https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net replacingOccurrences() 함수를 사용하였습니다. String 문서에는 없던 함수인데 NSString 에 존재하는 함수였습니다. https://developer.apple.com/documentation/foundation/nsstring/1412937-replacingoccurrences 정의를 보면 func replacingOccurrence..
[Swift] 2779 블라인드 (문자열) https://www.acmicpc.net/problem/2799 2799번: 블라인드 첫째 줄에 M과 N이 공백으로 구분해서 주어진다. (1 ≤ M, N ≤ 100) 다음 줄에는 현재 건너편 아파트의 상태가 주어진다. 모든 창문은 문제 설명에 나온 것 처럼 4*4 그리드로 주어진다. 또, 창문과 www.acmicpc.net 예전에는 문제를 풀다가 굳이 Swift 로 풀어야할까 라는 생각을 많이 했었는데 요즘에는 굳이 Swift 로 풀어서 언어에 더 친숙해지자는 목표로 문제를 풀고있습니다..ㅋㅋㅋ 블라인드 상태가 0개 ~ 4개 인 상태를 blidState 딕셔너리에 Dictionary 형태로 저장하였습니다. 그리고 M개의 창문 줄만큼 for문을 돌고 각 창문 줄의 창문 갯수(N개) 만큼 for문을 돌아서..
[Swift] Lv2.문자열 압축 (String.Index) https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 생각 처음에 문제를 봤을 땐 친절하게 주어진 5번째 예시 테케를 못보고 중간에도 마음대로 자를 수 있는줄 알고 이게 Lv2..? 하고 절망했는데.. 문제를 잘못 생각했었습니다.. 처음부터 length 씩 자르는게 정해져있었습니다. aabab 를 2개씩 자른다고 하면 [a] [ab] [ab] 이렇게 자를 수는 없고, 무조건 [aa] [ba] [b] 이렇게 ..
[Swift] 17780 새로운 게임 (구현) https://www.acmicpc.net/problem/17780 17780번: 새로운 게임 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net 문제 조건을 헷갈려서 조금 오래 걸렸습니다. 가장 아래에 있는 말만 움직일 수 있다는 말이 중간에 있는 말의 방향대로 맨 아래부터 다 움직인다는 뜻인줄 알고~ 중간에 있는 말 차례면 차례가 그냥 넘어간다고 생각하면 됩니다. 원래 2차원 배열에 queue 를 사용하려고 했는데 Swift 라서 3중배열로 (사실 차이는 없습니다..) 만들었습니다. var chessKnights: [[[Int]]] = ..
[Swift] Lv1.로또의 최고 순위와 최저 순위 (dictionary 사용) Dictionary를 복습한겸 굳이 Dictionary를 사용하지 않아도 되지만 복습겸 사용하였습니다. 랭킹을 6개 맞추면 1위, 1개 맞추면 0위, 0개 맞추면 6위로 순위를 찾을 수 있도록 ranking을 Dictionary로 선언하였습니다. ranking 값을 접근할 때 그냥 접근하면 optional 타입으로 반환되기 때문에 여기서는 값이 있을 것이라 확신하고 강제추출 하였습니다. [풀이] 0값을 세어서 최고 순위는 맞은 갯수 + 0값 최저 순위는 맞은 갯수 https://programmers.co.kr/learn/courses/30/lessons/77484?language=swift 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중..
[c++] 1302 베스트셀러 (map 사용) https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 자바로 풀기로 다짐했었는데.. 자바 map 사용이 익숙지 않아서 잠시 c++을 사용하였다. map 정렬 방법 vector로 바꾸어서 정렬한다. -> pair 사용! #include #include #include #include #include using namespace std; bool compare(pair& a, pair& b) { if (a.second == b.second) { ..
[JAVA] 16172 나는 친구가 적다 (Large) (KMP 알고리즘) https://www.acmicpc.net/problem/16172 16172번: 나는 친구가 적다 (Large) 첫 번째 줄에는 알파벳 소문자, 대문자, 숫자로 이루어진 문자열 S가 주어진다. (1 ≤ |S| ≤ 200,000) 두 번째 줄에는 성민이가 찾고자 하는 알파벳 소문자, 대문자로만 이루어진 키워드 문자열 K가 www.acmicpc.net KMP 알고리즘을 사용하여 푸는 문제이다. 아래는 기억하기 위한 주저리주저리 1. pi 배열을 구하는 방법과 KMP 를 구하는 방법은 동일하다. - pi 는 비교할 배열의 앞뒤를 구분 - KMP 는 비교할 배열과 비교되는 배열 2. pi 배열은 i=1, j=0 부터 시작 (j 가 앞부분) KMP는 i=0, j=0 으로 처음부터 비교 메모리 초과가 정말 많이 ..