본문 바로가기

코딩테스트 문제풀이81

[LeetCode] 7. Reverse Integer LeetCode 7번 Reverse Integer String 문제 정수를 뒤집는 문제 과정 정수를 문자열로 변환후 뒤집기 마지막 값이 -이면 (음수이면) 맨 앞으로 바꿔줌 정수의 범위 체크 후 넘어가면 0 리턴 소스코드 class Solution: def reverse(self, x: int) -> int: data = str(x)[::-1] if data[-1] == "-": data = "-" + data[:-1] if int(data) 2**31 - 1: return 0 return int(data) 통과 // 2023-07-31 스터디 과제 2023. 8. 8.
[LeetCode] 6. Zigzag Conversion LeetCode 6번 Zigzag Conversion String 문제 문자열 s가 주어졌을 때, 이를 지그재그 방향으로 나열한 문자열을 출력하는 문제 과정 문자열 방향을 정할 변수(direct)와 인덱스 값을 설정할 변수(cnt)가 필요하다. 문자열 s를 순회하면서 인덱스가 마지막이거나 처음일 경우에 방향을 바꿔준다. 방향에 따라 정방향이면 인덱스에 +1, 역방향이면 인덱스에 -1을 해준다. numRows만큼 선언해둔 2차원 배열(data)에 값을 저장하고 이를 문자열로 붙여서 출력해주면 된다. 소스코드 class Solution: def convert(self, s: str, numRows: int) -> str: answer = "" data = [[] for _ in range(numRows)] .. 2023. 8. 8.
[LeetCode] 5. Longest Palindromic Substring LeetCode 5번 Longest Palindromic Substring String, DP, 확장 문제 유명한 팰린드롬 문제 팰린드롬(palindrome)이란? 'aba', 'eye' 처럼 거꾸로 읽어도 똑같은 문장이나 단어를 뜻한다. 과정 주어진 문자열s를 특정 기준에 따라 분리하고 별도로 팰린드롬인지 판별하는 함수를 만들어 분리된 문자열이 팰린드롬인지 체크하였다. 1. check_palindrome() 함수 해당 문자열이 팰린드롬이지 판별하는 함수이다. 1-1) 매개변수로 잘려진 문자열s가 들어오는 경우 def check_palindromic(s): mid = len(s) // 2 if len(s) % 2 == 0: # 짝수 reversed_s = reversed(list(s[mid:])) rev.. 2023. 7. 31.
[LeetCode] 3. Longest Substring Without Repeating Characters LeetCode 3번 Longest Substring Without Repeating Characters string 문제 이 문제는 반복되는 알파벳이 나오지 않는 가장 큰 문자열을 반환하는 문제이다. 코테에서 보통 1번에 나오는 문자열관련 문제들과 유사했다. 과정 1) 처음에는 모든 경우를 구하기 위해서 2중 반복문을 사용했었다. # case 986) Time Limit Exceeded Error!! class Solution: def lengthOfLongestSubstring(self, s: str) -> int: answer = 0 for i in range(len(s)): num = [] cnt = 0 for j in range(i,len(s)): if s[j] in num: num = [s[j.. 2023. 7. 31.
[LeetCode] 2. Add Two Numbers LeetCode 2번 Add Two Numbers math, LinkedList 문제 반대의 값이 저장된 두 개의 LinkedList가 주어지고 원래 두 정수의 합을 다시 LinkedList로 반환하는 문제이다. 1번 예제를 보면 342 + 564 = 807이고 이를 역순한 708이 답이다. 오랜만에 보는 LinkedList 문제였다. 3번 예제 같은 경우엔 9999999 + 0009999 = 10009998 이 되고 이를 역순한 89990001이 답이 되는 것 제약사항은 다음과 같다. 과정 처음에 문제를 읽어봤을 때 무슨 소리인지.. 여러번 봤는데 이해하고 나면 단순한 문제임을 알 수 있다. 합산을 하는 과정은 주어진 LinkedList인 l1과 l2를 처음부터 차례대로 더하면 된다. 왜냐하면 어차피 .. 2023. 7. 31.
[백준] 1453 1로 만들기 백준 1453번 1로 만들기 DP [문제] 기본적인 DP(동적계획법) 문제 오랜만에 풀게되서 dp를 생각하지 못했고 dp개념을 다시 공부한 후 풀었다. 핵심은 1,2,3번으로 나온 연산의 최소횟수를 구하는 것 [과정] dp - BottomUp 풀이 / for문 사용 다른 하나는 재귀를 사용하는 TopDown 풀이가 있는데 이 문제에서는 BottomUp풀이를 사용했다. n에 변수 입력받기 dp배열을 0이 (x+1)개 있는 리스트로 초기화 dp[1]은 0이고 1이 1로 되는데 필요한 연산은 0회라는 뜻 즉, 이후에 dp[2]는 2가 1이 되는데 필요한 최소 연산 횟수인 1이 될 것 2부터 n+1까지 반복 dp[i]=dp[i-1]+1 : d[i]는 숫자 i가 1이 되는데 걸리는 최소한의 연산 횟수를 저장 i에.. 2023. 5. 12.
[프로그래머스] k진수에서 소수 개수 구하기 프로그래머스 2022 KAKAO BLIND RECRUITMENT k진수에서 소수 개수 구하기 구현 ※ 카카오 공식 해설 https://tech.kakao.com/2022/01/14/2022-kakao-recruitment-round-1/ 2022 카카오 신입 공채 1차 온라인 코딩테스트 for Tech developers 문제해설 지난 2021년 9월 11일 토요일 오후 2시부터 7시까지 5시간 동안 2022 KAKAO BLIND RECRUITMENT 1차 코딩 테스트가 진행되었습니다. 테스트에는 총 7개의 문제가 출제되었으며, 개발 언어는 C++, Java, JavaScript, K tech.kakao.com [문제] 10진수를 k진수로 변환하고 그 안에서 소수의 개수를 구하는 문제 제한사항에서 n의 .. 2023. 5. 9.
[프로그래머스] 파괴되지 않은 건물 2022 KAKAO BLIND RECRUITMENT 파괴되지 않은 건물 누적합 ※ 카카오 공식 해설 https://tech.kakao.com/2022/01/14/2022-kakao-recruitment-round-1/ [문제] 적의 공격 및 아군의 회복은 직사각형 형태 내구도는 음수도 될 수 있음 여러차례의 공격 및 회복이 끝나면 내구도가 0보다 큰 건물의 개수를 반환하면 되는 문제 우선 문제풀이에 앞서 시간복잡도부터 계산하도록 하자. 기본적으로 1억의 연산은 1초의 시간이 소요된다. 해당 문제는 최악의 경우에 1,000 x 1,000 x 25.,000 = 250,000,000,000의 시간이 소요됨을 알 수 있다. 즉, 브루트포스로 풀게 되는 경우에는 O(N x M x K)이 되고 정확성 테스트에는 통.. 2023. 5. 9.
반응형