본문 바로가기

구현9

[프로그래머스] (2018 카카오) 프렌즈4블록 머리말 문제 링크 코딩테스트 연습 - [1차] 프렌즈4블록 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 풀이 개요 우선 2개의 배열을 새로 만들었다. 반복문에 필요한 보드 배열(board 배열의 각 요소를 한 단어씩 구분하여 새로 할당) - boardArr 각 보드의 블록이 2*2 블록인지의 여부를 판단하는 배열 - isSquare 풀이 순서 boardArr를 반복하면서 isSquare에 대한 참/거짓을 판별한다 isSquare 중에 true인 부분의 인덱스에 위치한 boardArr의 요소를 공백으로 바꾸고 지워진 블록을 카운트한다 == 블록이 지워진다 공백이 바꾼 자리를 재배열한다 == 블록이 떨어진다 이제 1~3번을 계속 반복하는데, 공백이 한번도 되지 않을 때 반복을 중단하고 카운트.. 2023. 6. 7.
[프로그래머스] (Swift) 정수를 나선형으로 배치하기 머리말 문제 링크 코딩테스트 연습 - 정수를 나선형으로 배치하기 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 풀이 한번 4부터 6까지 배열을 직접 만들어 보았다. /* [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]] [[1, 2, 3, 4, 5, 6], [20, 21, 22, 23, 24, 7], [19, 32, 33, 34, 25, 8], [18, 31, 36, 35, 26, 9], [17, 30, 29, 28, 27, 10]] [16, 15.. 2023. 6. 5.
[프로그래머스] (Swift) [카카오 1차] 다트 게임 머리말 문제 링크 코딩테스트 연습 - [1차] 다트 게임 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 풀이 도저히 안 풀려서… 결국 구글링을 했다😭 참고 사이트 링크 [프로그래머스 lv1] [1차] 다트 게임 (파이썬) 풀이 핵심 → 스택 문제 풀이의 핵심은 "스택"을 구현하여, 주어진 배열의 요소를 하나하나 꺼내면서 이에 대한 조건문에 따라 스택에 삽입하거나 삭제하는 것이다. 풀이 순서 문자열의 문자 하나하나를 요소로 하는 배열을 만든다.(dartArr) 다만,숫자 10은 2글자이기에 1번에 앞서 10을 "a"로 변환한다. "S", "D", "T"를 각각 1, 2, 3에 해당하는 딕녀서리를 할당한다.(bonusDict) 빈 스택을 할당한다.(stack) 이제 1번의 배열의 요소를 반복하.. 2023. 6. 2.
[프로그래머스] 두 수의 합 머리말 문제 링크 코딩테스트 연습 - 두 수의 합 | 프로그래머스 스쿨 이 문제를 선택한 이유 구현 문제 연습 문자열 풀이 주의점 문제의 조건에서 a와 b의 길이가 최대 100,000인 점을 주의해야 한다. 단순히 문자열을 정수로 변환하여 더하면, 오버플로우에 의해 오류가 난다. 따라서 사람이 직접 계산하는 방식(혹은 논리회로에서 전가산기의 방식)으로 접근해야 한다. 숫자를 맨끝에서 더하면서 자리올림과 나머지를 나누어, 새로운 배열에 추가할 것이다. 풀이 순서 우선 파라미터의 값 중에 큰 수와 작은 수를 구분하여 각각 할당한다. (bigNumber, smallNumber) 문자열을 정수를 요소로 갖는 배열로 새로 할당한다(bigNumberArr, smallNumberArr) 각 자리를 더한 값의 배열(s.. 2023. 5. 30.
[백준] (Swift) 11866번: 요세푸스 문제 0 머리말 문제 링크 11866번: 요세푸스 문제 0 이 문제를 선택한 이유 낯선 문제를 접했을 떄 적절한 반복문과 조건문을 사용하기 위함 구현 문제 연습 풀이 이 문제의 핵심은 배열의 인덱스가 초과할 때, 얼마만큼 처음의 인덱스로 돌아가서 인덱스를 구하는지이다. 나머지 연산자를 활용하여 배열의 길이만큼을 나눈 나머지를 구해 인덱스 초과를 방지한다 // 입력 var input = readLine()!.split(separator: " ").map { Int($0)! } // n, k 할당 let n = input[0] // 7 let k = input[1] // 3 // 배열 할당 var circle = Array(1...n) // 인덱스 초기화 var order = [Int]() var index = 0 .. 2023. 5. 26.
[백준] (Python) A와 B 머리말 문제 링크 12904번: A와 B 이 문제를 선택한 이유 문제를 읽고 해석할 수 있는 능력(문해력) 반복문과 조건문을 적재적소에 활용하기 구현 문제 유형 연습 풀이 1) 잘못된 접근 방식 - 브루트 포스 처음에는 2가지의 연산이 존재하고 각각 결과론적으로 A를 추가하거나 B를 추가하거나 2가지이다. $n$ = (결괏값의 길이) - (초깃값의 길이)만큼의 경우의 수가 있으니 브루트 포스로 접근하면 되겠구나 싶었다. 결국 길이에 대한 2가지의 연산이므로 $2^{n}$을 생각하여 문제를 풀었다. # =================== 브루트 포스 -> 시간 초과 ===================== # S와 T 입력 input_string = input().strip() objective_string.. 2023. 5. 26.
[백준] (Python) 7568번: 덩치 머리말 문제 링크 7568번: 덩치 이 문제를 선택한 이유 구현 문제 연습 반복문과 조건문을 적재적소에 활용하기 위함 풀이 몸무게와 키에 대한 표를 리스트의 요소로서 할당해야 한다. 여기서 몸무게와 키는 튜플로 묶어서 할당했다. 리스트의 요소를 반복하면서 현재의 요소를 1등으로 초기화한다. 자신을 포함한 다른 모든 요소를 비교하면서 자신보다 몸무게도 많이 나가고 키도 큰 사람이 있다면 나의 등수의 숫자의 크기를 늘린다. 여기서 자기 자신을 포함해도 4번의 조건에 해당하지 않기에 괜찮다. 4번에서 나온 등수를 공백 단위로 하나하나 출력한다. # 7568번: 덩치 # 실버 5 # # import sys # sys.stdin = open("input.txt", "r") # input = sys.stdin.re.. 2023. 5. 24.
[백준] (Python) 1193번: 분수찾기 머리말 문제 링크 1193번: 분수찾기 이 문제를 선택한 이유 구현 문제를 푸는데 나에게 맞는 난이도를 조절하기 위해 평소보다 약간 느슨한 난이도의 문제를 골랐다. 스터디를 새로 만들었는데, 팀원이 알고리즘 문제가 익숙하지 않아서 같이 풀어 보기 위해서 너무 쉽지도, 어렵지도 않은 문제를 찾다 보니 선택하게 되었다. 풀이 1. 직접 예시를 입력해 보기 아래처럼 직접 순서를 써 보았다. """ row x numer/denom 1 1 1/1 2 2 3 1/2 2/1 3 4 5 6 3/1 2/2 1/3 4 7 8 9 10 1/4 2/3 3/2 4/1 5 11 12 13 14 15 5/1 4/2 3/3 2/4 1/5 """ """ 8은 4번 줄의 2번째이다 row 8 - 1 = 7 1 8 - 1 - 2 = 5 .. 2023. 5. 22.
[백준] (Swift) 20546번 기적의 매매법 머리말 이 문제를 선택한 이유 - 구현 문제 연습 앨런(Allan)과 하고 있는 디코 월목 스터디에서 이번 달에는 구현과 문자열에 집중해 보기 위해 택했다. 알고리즘에 대한 이론보다는 나의 사고 과정을 코드로 옮기는 연습이 필요한 시기였다. 문제 링크 20546번: 🐜 기적의 매매법 🐜 풀이 매매 전략이 두 개이기에 각 전략에 대한 함수가 필요해 보였다. 매개변수는 공통적으로 현재 남아 있는 현금(budget)과 주식 차트의 배열(stockChart)을 설정했다. 현재 주식의 가격은 주식 차트의 배열(stockChart)에서 인덱스로 접근하기로 했다. 각 전략에서 필요한 전량 매수와 전량 매도에 대한 함수를 각각 만들었다. 단순히 변수와 연산자로 구현할 수도 있겠지만, 함수의 가독성을 위해 언제 사고파는.. 2023. 5. 19.
반응형