아래 글은 [이것이 코딩 테스트다 wiht 파이썬] 책을 기반하여 작성한 글입니다.
구현 알고리즘
: 머릿속에 잇는 알고리즘을 정확하고 빠르게 프로그램으로 작성하기
✨구현 알고리즘은 피지컬 싸움이다!
(1) 완전 탐색
: 모든 경우의 수를 다 계산하는 해결 방법
(2) 시뮬레이션
: 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행하는 문제
- 고려해야하는 메모리 제약 사항 -
파이썬은 자료형의 표현 범위 제한은 고려 안해도 됨!
리스트는 보통 128MB ~ 512MB
데이터의 개수(리스트 길이) | 메모리 사용량 |
1,000 | 약 4KB |
1,000,000 | 약 4KB |
10,000,000 | 약 40MB |
12-1.py 럭키 스트레이트 - ⭐1/3 (⭕)
N = input()
n = len(N) // 2
right = left = 0
for i in range(n):
right += int(N[i])
left += int(N[i+n])
if right == left:
print("LUCKY")
else:
print("READY")
12-2.py 문자열 재정렬 - ⭐1/3 (⭕)
문제를 잘 읽고 풀자 ~~
그리고 조건문에서 괄호를 잘 사용하자~~
data = input()
result1= []
result2 = 0
for i in range(len(data)):
if (ord(data[i]) <= 90) & (ord(data[i]) >=65):
result1.append(data[i])
else: result2 += int(data[i])
result1.sort()
result1.append(result2)
print(str(result1))
교재 풀이를 보니 나는 파이썬의 장점들을 잘 사용하지 못하는 것 같다..ㅎㅎ
이 문제처럼 쉬운 문제여도 파이썬의 편리함을 사용하면 훨씬 쉽게 코드를 짤 수 있는데!!!
isalpha() - 알파벳인지 확인하는 함수
print('', join(result)) - 리스트에 있는 함수를 문자열로 바꾸는 함수
그리고, 숫자가 아예 없을 때를 고려하여 위의 코드에서 result2의 값이 0이면 append를 하지 않는 조건을 하나 더 추가해야 한다!
12-3.py 문자열 압축 - ⭐1.5/3 (❌)
두근두근 2020 카카오 신입 공채 기출 문제이다.
문제의 길이가 책의 한 페이지를 꽉 채웠다.! 뒤의 문제들도 별 1.5개나 2개짜리여서 풀고 싶었다..
https://school.programmers.co.kr/learn/courses/30/lessons/60057
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제를 풀면서 나온 아이디어 2가지는 아래와 같다.
- 슬라이싱 사용 - [start:end:step]
- 2중 for문 사용? while문 사용? while: data[start:end:i] == data[start + i : end+i : i]
어렵다.. 정답 풀이나 해야지..
[교재풀이]
def solution(s):
answer = len(s)
for step in range(1, len(s) // 2 + 1):
compressed = ""
prev = s[0:step]
count = 1
for j in range(step, len(s), step):
if prev == s[j:j+step]:
count += 1
else:
compressed += str(count) + prev if count >= 2 else prev
prev = s[j:j+step]
count = 1
compressed += str(count) + prev if count >= 2 else prev
answer = min(answer, len(compressed))
return answer
이 문제는 정말 피지컬 싸움이 맞는 듯하다. 코드를 짜는 능력!
문제를 어떻게 풀어야 하는 지에 대한 아이디어는 매우 단순하다. 하지만 이를 구현하는 능력이 요구된다.
8번째 줄의 "for j in range(step, len(s), step):"처럼 for문을 잘 사용할 줄 알아야하고
12번째 줄의 "compressed += str(count) + prev if count >= 2 else prev"처럼 간단하게 코드를 짤 줄 알아야 한다!!
12-4.py 자물쇠와 열쇠 - ⭐1.5/3 (⭕)
파이썬에는 switch-case문이 없
12-5.py 뱀 - ⭐2/3 (⭕)
파이썬에는 switch-case문이 없
12-6.py 기둥과 보 설치 - ⭐1.5/3 (⭕)
파이썬에는 switch-case문이 없
12-7.py 치킨 배달 - ⭐2/3 (⭕)
파이썬에는 switch-case문이 없
12-8.py 외벽 점검 - ⭐3/3 (⭕)
파이썬에는 switch-case문이 없
'Coding Test > 이것이 코딩 테스트다 with 파이썬' 카테고리의 다른 글
[이코테] chapter06 정렬 (0) | 2023.08.17 |
---|---|
[이코테] chapter05 DFS/BFS (0) | 2023.07.24 |
[이코테] chapter04 구현 (2) | 2023.07.18 |
[이코테] chapter11 그리디 문제 (0) | 2023.07.10 |
[이코테] chapter03 그리디 (1) | 2023.07.10 |