본문 바로가기

전체 글247

[프로그래머스] 멀쩡한 사각형 (Swift) https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr level 2 구현 (최대공약수 & 수학) 직사각형의 가로,세로 크기가 주어지고, 이 직사각형을 구성하는 넓이가 1(1*1) 사각형 중에 대각선이 지나가는 사각형을 제외한 작은 사각형들의 넓이의 합을 반환하는 문제이다. 접근방법 간단해 보였는데 어려웠다. 우선 대각선이 사각형들의 꼭짓점과 만나는 점을 기준으로 작은 사각형으로 분리해야 .. 2022. 3. 3.
[프로그래머스] 큰 수 만들기 (Swift) https://programmers.co.kr/learn/courses/30/lessons/42883?language=swift 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr level 2 큰 수 만들기 (그리디) 정수로 된 문자열이 주어지고, 자연수 k가 주어지면 정수 문자열에서 k개의 문자를 제거하여 얻을 수 있는 수 중 가장 큰 수를 구하는 문제 문자열에서 문자를 제거하는 것이기 때문에 문자열의 순서는 보존되어야 한다. 접근방법 큰 수를 얻는게 목적인 만큼, 앞자리 수가 커야한다. 스택 하나를 두고, k개의 카드(앞으로 문자를 제거하는 걸 카드라고 표현한다)가 남아있는 한 새로 들어갈 수가 현재 스택의 맨 위의 수보다 커야한다.는 로직이면 가장 큰 수를 얻을 수 있다. 오답노트 .. 2022. 3. 2.
[프로그래머스] 행렬 테두리 회전하기 (Swift) https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 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 level2 구현 rows*columns 인 격자판이 있고, 순서대로 1부터 숫자가 채워져 있다. 사각형을 이루는 대각선의 점이 주어지고, 그 사각형의 테두리를 시계방향으로 한칸 회전한다. 여러개의 대각선 점이 주어지고, 각 테두리를 회전시키면서 만난 가장 최솟값을 반환하는 문제 접근방법 판이 커질 것 같아서 다른 방법을 고민해봤는데, 숫자의 .. 2022. 3. 2.
[프로그래머스] 기능개발 (Swift) https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr level2, 스택 진행 상황, 속도가 아래와 같이 주어진다. 이때 속도는 하루에 할 수 있는 작업의 양 [93, 30, 55] [1, 30, 5] 진행 상황 배열에서 앞쪽에 있는 작업부터 배포될 수 있고, 뒤에 있는 작업은 작업이 먼저 완료되어도 그 앞의 작업들이 배포되기 전까지는 배포될 수 없다. 접근방법 1. 각 작업 마다 필요한 작업일수를 구한다... 2022. 3. 2.
[프로그래머스] 조이스틱 (C++) https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr level2 알파벳으로 구성된 문자열이 주어지고, A로만 이루어진 동일한 길이의 문자열을 주어진 문자열과 동일하도록 바꾸려면 알파벳을 바꾸는 조이스틱 방향과, 커서를 이동하는 조이스틱 방향을 몇번 조작해야하는지 그 최솟값을 구하는 문제 어려웠다 ^_^ 접근방법 알파벳 변경을 위한 조이스틱 조작 횟수는 A부터 Z방향으로 이동하는 경우와, A에서.. 2022. 3. 2.
[프로그래머스] 위장 (Swift) https://programmers.co.kr/learn/courses/30/lessons/42578?language=swift level 2 옷:종류로 된 딕셔너리가 주어지고, 입을 수 있는 옷의 조합의 수를 구하는 문제 한번에 종류당 1개의 옷을 입을 수 있으며, 아무것도 안입는건 불가능 접근방법* 처음에는 조합을 구하는 문제라고 생각해서 백트래킹이나 완전탐색 같은 알고리즘을 사용해서 조합을 구해야 되나 고민했었다. 안입는 경우를 종류별 옷에 개수에 추가하여 구한 블로그를 참고했다. 고등학생때 확통배울때 했었는데..까먹었었음.. 종류별 옷의 개수 + 1(안입는 경우) 를 구한 후에 모든 종류의 옷의 개수를 곱해주면 된다. 그리고 하루에 최소 하나의 옷은 입어야 하기 때문에 아무것도 안입는 경우를 빼준.. 2022. 3. 2.
[프로그래머스] 괄호 회전하기 (Swift) (스터디) https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 1. 적용 알고리즘과 문제 설명 구현 문제 괄호들로 구성된 하나의 문자열이 주어지면 이 괄호 문자열이 짝이 맞는 괄호들로 구성되어 있는 올바른 문자열인지 검사해야 한다. 근데? 이 문자열만 검사하는게 아님. 이 문자열을 한칸씩 오른쪽으로 밀어서 회전한 모든 문자열들에 대해서도 검사를 해야함 그래서 과연 몇개나 올바른 문자열인지 그 개수를 반환해야 함 이 문제에서 회전한 문자열을 구하는 데 사용한 방법을 그림으로 그려봤다 ^_^ (친절MAX) 이런 방식으로 문자열은 그대로 두고 인덱스의 시작 위치만 바꿔가면서 회전한 문자열을 순회했다 인덱스.. 2022. 2. 27.
[프로그래머스] 타겟 넘버 (Swift) https://programmers.co.kr/learn/courses/30/lessons/43165?language=swift 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr https://sio2whocode.tistory.com/171 [프로그래머스] 타겟 넘버 (C++) https://programmers.co.kr/learn/courses/30/lessons/43165?language=cpp 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를.. 2022. 2. 22.
[프로그래머스] 타겟 넘버 (C++) https://programmers.co.kr/learn/courses/30/lessons/43165?language=cpp 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr Level 2 DFS 일련의 자연수를 담은 배열이 하나 주어지고, 이들을 적절히 더하고 빼서 target과 동일해지는 경우의 수가 몇인지 반환하는 문제 접근방법 하나의 숫자 당 양수, 음수 두 가지 경우를 고려한다. DFS에 적용해보면, 하나의 수에 대해 양수/음수가 각각 하나의 노드인 셈이다. 각 노드의 인접한 노.. 2022. 2. 22.
[Swift] 데이터타입/컬렉션타입/구조체,클래스,열거형/옵셔널 #1 1. Enum과 Struct의 차이점 Enum 타입은 열거형 타입으로 연관된 값들의 집합이다. case 하나하나가 하나의 값을 나타내는 타입. Struct는 프로퍼티와 메서드로 구성된 타입. enum, struct 모두 class와 다르게 값 타입이며, 상속이 불가능하지만 프로토콜 채택은 가능함. 2. Int / Int32 / Int64 | UInt / UInt32 / UInt64 각각의 차이는 무엇인지? 모두 정수를 나타내는 데이터 타입. 뒤에 붙는 32,64는 타입이 표현할 수 있는 비트의 크기. Int는 음수와 0, 양수를 표현할 수 있고, UInt는 양수만 표현할 수 있음. 크기가 표시되지 않은 Int, UInt는 해당 프로그램이 컴파일되는 컴퓨터의 시스템 아키텍처를 따른다. 즉, 자신이 사용하는.. 2022. 2. 19.
[프로그래머스] 로또의 최고순위와 최저순위 (Swift) (스터디) https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 1. 적용 알고리즘과 문제 설명 문제 설명 1부터 45까지의 수를 중복없이 6개가 나열된 로또 번호가 2개 주어진다. (배열 2개, 중복없음은 하나의 로또 번호안에서만 해당) 하나는 민우의 손상된 로또 번호로, 0으로 표시된 수가 손상된 수이다. 다른 하나는 당첨 번호를 담은 로또이다. 이때, 민우가 가진 로또가 될.. 2022. 2. 19.
[프로그래머스] #139 하샤드 수 (Swift) https://programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr level1 수, 구현 하나의 양의 정수 x를 받아서 각 자리수를 더한 값으로 x가 나누어떨어지면 true 아니면 false를 반환하는 문제 접근방법 C++로 풀이했을 때는 정수의 자리수를 나누는 방식으로 구현했다. (훨씬 빠름) (solution2) Swift로는 고차함수를 또 사용하고 싶어서, reduce로 풀려고 x : Int -.. 2022. 2. 18.