본문 바로가기

코딩 테스트43

[백준] (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.
[백준] (Swift/Python) 1213번: 펠린드롬 만들기 1213번: 팰린드롬 만들기 풀이 알파벳 26개를 인덱스로 갖는 배열 만들기 대문자 알파벳 26개만 입력값으로 주어지기에, 26개의 배열을 만들어 A부터 Z까지 각각 0~25의 인덱스로 설정하여 알파벳 개수를 요소로 설정한다. 따라서 Swift의 경우에는 asciiValue와 Unicode.Scalar를, Python의 경우에는 ord와 chr를 적절히 설정하여 알파벳에 해당하는 인덱스를 알맞게 접근해야 한다. 문자의 개수가 홀수인 문자는 0 또는 1이어야 한다. 펠린드롬에서 알파벳 개수가 홀수인 문자는 무조건 펠린드롬의 가운데 글자가 되어야 한다. 만약 개수가 홀수인 문자가 2개 이상이면, 해당 글자 모두 정가운데에 위치해야 하는데 그러면 펠린드롬이 성립할 수가 없다. 코드 Swift import Fo.. 2023. 5. 16.
[프로그래머스] (Swift) 크기가 작은 부분 문자열 - Lv.1 코딩테스트 연습 - 크기가 작은 부분 문자열 | 프로그래머스 스쿨 풀이 문자열을 배열로 분리 매개변수 t의 숫자를, 문자열 타입의 숫자로 하나로 분리한 배열로 변환한다 반복문에 필요한 범위와 부분문자열의 길이를 할당한다 부분문자열이 p보다 작거나 같으면 결괏값을 1 증가시킨다 코드 import Foundation func solution(_ t:String, _ p:String) -> Int { // solution("3141592", "271") // 매개변수 t의 숫자를, 문자열 타입의 숫자로 하나로 분리한 배열로 변환 let stringArray = Array(t).map { String($0) } // ["3", "1", "4", "1", "5", "9", "2"] // 결괏값을 0으로 초기화 v.. 2023. 5. 11.
[프로그래머스] (Swift) 카펫 - Lv.2 코딩테스트 연습 - 카펫 | 프로그래머스 스쿨 머리말 카테고리에 적혀 있는 풀이 힌트 원래 알고리즘을 풀 때 최대한 해당 문제의 주제를 알지 않으려고 한다. 이미 그 알고리즘 방식을 알고 풀면 실제 시험 상황처럼 당황하지 않기 때문이다. 하지만, 사이트에서 이미 완전 탐색임을 알려 주는 바람에 큰 힌트를 얻었다. 풀이 카펫의 면적은 갈색 격자의 수와 노란색 격자 수의 총합과 같다. 카펫의 상하좌우의 끝이 모두 한 줄이기 때문에 가로와 세로의 길이를 각각 2를 빼서 서로 곱하면 그것이 노란색 격자의 수와 같다. /* area = brown + yellow = row * col yellow = (row - 2) * (col - 2) OOOO OXXO OOOO OOO OXO OOO OOOOOOOO OXXXXX.. 2023. 5. 10.
[프로그래머스] (Swift) 비밀지도 (2018 카카오 1차) - Lv.1 머리말 문제 링크 이번 문제는 설명이 매우 길어서 한번에 캡처가 힘들어 링크만 첨부했다. 코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 스쿨 풀이 처음에는 Swift에서 제곱 메서드를 찾지 못해 직접 구현했다. 우선 정해진 길이의 이진법으로 변환하는 함수를 구현했다. 이진수의 길이와 정해진 길이를 고려해 "0"을 더할지 말지를 정했다. 이제는 매개변수로 주어진 배열을 1번의 함수를 이용해 이진수로 변환한다. 2번으로 구한 이진수로 서로 겹치는 과정이 필요하다. 이진수 문자열을 다시 쪼개어 각 자리를 더하여 크기에 따라 서로 다른 문자열로 변환하고 이를 연결하는 과정을 구현했다. 코드 func solution(_ n:Int, _ arr1:[Int], _ arr2:[Int]) -> [String] {.. 2023. 5. 9.
[프로그래머스] (Swift) 짝지어 제거하기 - Lv.2 문제 코딩테스트 연습 - 짝지어 제거하기 | 프로그래머스 스쿨 풀이 자료구조 스택(stack)의 개념 자료구조 스택을 이용하면 쉽게 풀 수 있다. 스택에 대해서는 아래 링크에 정리해 놨으니 확인해 보자. [자료구조] 스택(stack) in Python [자료구조] 스택(stack) in Python 선형 자료구조(linear data structure) 중에서 스택(stack)에 대해 알아 보자. 스택(stack)을 사전에서 찾아보면 무더기, 더미라는 뜻의 영단어이다. 아래의 돌탑이 대표적인 스택이다. 📌 정의 A stack is an andy-archive.tistory.com 스택의 삽입, 삭제 스택의 구현은 배열을 이용하여 메서드로 삽입(append), 삭제(removeLast)를 사용하면 된다. .. 2023. 5. 7.
[프로그래머스] (Swift) 시저 암호 - Lv.1 코딩테스트 연습 - 시저 암호 | 프로그래머스 스쿨 풀이 유니코드 스칼라 값과 정수 값을 오가는 것에 애를 많이 먹었다. 공식 문서를 찾아 보려 해도 키워드로 UnicodeScalar, unicodeScalar를 찾으면 문서가 너무 많이 나오고 설명이나 예시 코드가 많지 않아서 애를 많이 먹었다.🥲 결괏값을 빈 문자열로 초기화 공백인 경우 공백을 결괏값에 더하고 continue한다. 다음에는 간격을 더한 알파벳 값이 끝 값(z, Z)을 넘어 초과할 경우 이를 바꿔줘야 하는데, 이게 좀 까다롭다. 초과하지 않는 경우에는 단순히 간격을 더한 값을 결괏값에 더한다. 코드 func solution(_ s:String, _ n:Int) -> String { var result = "" // 문자열의 유니코드 스칼.. 2023. 5. 2.
반응형