전체 글
-
[React] 실력다지기 프로젝트 - 프론트엔드Projects/Krafton_Jungle_4 2024. 4. 20. 00:42
프레임워크 학습을 위한 미니 프로젝트 개발을 시작하였다. 프론트엔드 개발을 희망하는 사람으로서 리액트 학습과 함께 미니 프로젝트를 동시에 진행하였다. 과제 설명 개발범위 프론트: 게시판 UI를 구현 백엔드: 게시판 Server API 구현 추가적 구현 가능 (기술적 챌린지 요소) 초기에 나는 일단 프론트만 개발하겠다고 생각했다. 하지만 이후에 node.js 사용과, 데이터베이스와의 연결도 시도해보고 서버 클라이언트간 통신도 이뤄내보고 싶다고 생각해서 이후에 서버를 구현하였다. 인원구성 혼자 fullstack 개발 가능 프론트 UI만 구현할 경우 게시판 데이터는 브라우저상에서만 존재하도록 구성, 또는 postman mock server를 구성해서 사용 백엔드 ServerAPI만 구현한 경우, postman..
-
[LeetCode] 367. Valid Perfect ScoreComputerScience/Algorithm 2024. 4. 9. 15:23
문제성능 요약메모리: 16.52MB , 시간: 41ms 접근 방법일단 라이브러리를 사용할 수 없다는 문제 조건으로 시간 복잡도를 어떻게 줄여 나갈 것인가가 관건이라고 생각했다.제곱근은 주어진 num의 절반보다 작을 것이다.예를 들어 16의 제곱근인 4는 16의 절반보다 작다. 또한 제곱근끼리의 곱셈이 num보다 커진다면 그것은 제곱수가 아니라고 판단했다.예를 들어 15의 경우 1~8까지 탐색을 하는데, i가 4일 경우 16이 되어 15를 넘어가게 되므로 이는 15가 제곱근으로 정수를 갖지 않는다는 것과 같다고 생각했다.정답class Solution: def isPerfectSquare(self, num: int) -> bool: if num == 1: retu..
-
[LeetCode] 166. Fraction to Recurring DecimalComputerScience/Algorithm 2024. 4. 9. 15:13
문제 성능 요약 메모리: 16.9MB, 시간: 26ms 분류 ? 접근 방법 리트코드로 문제를 푸는 것이 처음이어서, class를 활용한 디버깅 방법 등을 연구하느라 시간이 좀 걸렸다. 문제로에서는 분수가 반복되는 부분을 찾는 것이 관건이겠다 생각했다. class Solution: def fractionToDecimal(self, numerator: int, denominator: int) -> str: ans = "" ans2 = "" n = numerator d = denominator if n % d == 0: return str(n//d) else: if len(str(n/d)) > 10: ans += str(n/d).split(".")[1] for i in ans: if i in ans2: bre..
-
[BOJ] 히든 넘버 - 8595ComputerScience/Algorithm 2024. 4. 9. 00:44
문제성능 요약메모리: 40192KB, 시간: 2336ms분류문자열파싱접근 방법주어진 단어들 사이에서 조건에 맞는 '숫자'들의 합을 구하는 문제였기 때문에, 문자열에서 숫자와 문자를 구분하는 법부터 알아야 된다고 생각했다. 하다 보니 매우 하드코딩이 된 것 같다.먼저 주어진 단어를 인덱스 하나씩 탐색하여 문자열의 아스키코드를 이용하는 ord()함수를 사용해서 문자인 것과 아닌 것의 처리를 다르게 할 수 있도록 분기를 나눴다.인덱스가 늘어나면서 숫자이면 number 문자열에 +연산으로 더하였고, 아니라면(즉 문자라면) 이때까지 더해서 나온 단어를 int()로 숫자화하여 결과값을 출력하기 위한 sum에 더해주었다.하지만 여기서 예외 케이스들이 몇개 있었다. 예를 들자면 'aaaaa0a009'와 같은 케이스였다..
-
[BOJ] 8진수, 10진수, 16진수 - 11816ComputerScience/Algorithm 2024. 4. 6. 14:24
문제https://www.acmicpc.net/problem/11816성능 요약메모리: 31252 KB, 시간: 40 ms분류사칙연산구현수학파싱문자열접근 방법주어진 조건에 맞게 분기를 나누었다.8진수는 0부터 시작하고, 16진수는 0x로 시작한다. 이에 맞게 주어진 입력을 처리하면 되었고, 문자열은 슬라이싱이 가능하기 때문에 이를 활용하였다. 잘 모르고 있었던 것은 8진수, 16진수로의 변환과 int()의 사용법이었다.정답import sysinput = sys.stdin.readlinex = input().rstrip()if len(x) >= 2: if (x[0] == "0") & (x[1] == "x"): print(int(x[2:], 16)) elif x[0] == "0": ..
-
[BOJ] 숫자의 합 - 11720ComputerScience/Algorithm 2024. 4. 5. 14:27
문제 성능 요약메모리: 31120 KB, 시간: 44 ms분류구현수학문자열접근 방법일렬로 들어오는, 구분자가 없는 문자열을 어떻게 처리할지 고민했다.split() 함수를 사용할 수 있었다. 하지만 split()은 공백, 쉽표 등의 구분자가 존재해야만 했고 이를 사용할 수 없다는 것을 알게 되었다.공백이 없는 문자열을 자르기 위해서는 list()를 사용할 수 있었다. 하지만 list()는 input()으로 들어온 모든 문자열을 문자 하나씩 원소화한다. 따라서 '\n'과 같은 개행문자도 원소에 포함한다.이를 위해서 rstrip()을 활용해 '\n'을 제거하였다.정답import sysinput = sys.stdin.readlinen = int(input())b = list(map(int, list(input(..
-
[BOJ] 소인수분해 - 11653ComputerScience/Algorithm 2024. 4. 5. 10:58
문제 접근 방법부끄럽지만 일단 소인수 분해에 대해 다시 찾아봤다..소인수분해란, 어떤 자연수를 소인수(소수인 인수)들의 곱으로 나타내는 것이다. 그렇다면 '소수'란 무엇인가?소수는 1과 자기 자신만을 인수로 갖는 수를 말한다. 그렇다면 우리가 구해야 할 것은 '소수'라고 생각해서, 나눠주는 과정 속에서 그 다음 소수로 나눠주고, 안나눠지면 또 다른 소수를 나눠주면 되겠다 생각했다.while n == i: if n % i != 0 : n = n // i; print(i) else: i += 1 if i % 2 == 0: i += 1 다음과 같이 접근하여, 자연수를 소수를 인수분해 하면 n이 인수가 될 때 까지 반복하면 끝난다..