코딩테스트/Python
Python 코딩 정리
soohykim
2025. 4. 10. 14:15
728x90
반응형

📍 프로그래머스
📁 배열/문자열 역순
1) 슬라이싱 이용
answer = [] # 문자열인 경우 answer = ''
answer = num_list[::-1] # 원소 순서를 거꾸로 뒤집기
2) for문 이용
for c in my_string:
answer = c + answer # 문자열 앞에 다음 문자 추가
3) 리스트 reverse() 함수 이용
ans_list = list(my_string) # 문자열 -> 리스트
ans_list.reverse() # 리스트 역순
answer = ''.join(ans_list) # 리스트 -> 문자열
📂 배열 원소의 길이
1) append 이용
for i in strlist:
answer.append(len(i))
2) map 함수 이용
answer = list(map(len, strlist))
📁 정렬
정렬시 sort() 함수 이용
numbers.sort() # 정렬
return numbers[-1]*numbers[-2] # 첫 번째, 두 번째 큰 수 곱하기
📂 문자열 바꾸기
- 교체시 replace() 함수 이용
answer = my_string.replace(letter,'') # letter 문자 찾고 -> 공백 바꾸기
- 문자열 비교 후 바꾸기
vow = ("a,e,i,o,u")
for i in vow:
my_string = my_string.replace(i, "") # 모음을 공백으로 바꾸기
answer = my_string
📁 올림, 내림
import math (math 모듈 사용)
- 올림 ceil / 반올림 round
- 내림 floor / 버림 trunc
math.round(3.1415, 2) # 소수 둘째 자리에서 반올림 (생략시 첫째 자리)
math.floor(-3.14) # 내림 -4
math.trunc(-3.14) # 버림 -3 (0에 가깝게)
📂 제곱, 제곱근
import math (math 모듈 사용)
1) pow() 제곱 함수 사용
math.pow(2,7) # 2의 7승
2) *0.5 = 제곱근
if (n**0.5).is_integer(): # 0.5제곱은 제곱근
answer = 1
3) sqrt() 제곱근 함수 사용
if math.sqrt(n).is_integer(): # 제곱근 한 후 정수인지 판별
answer = 1
📁 문자열 찾기
str1 : "ab6CDE443fgh22iJKlmn1o"
str2 : "6CD"
if str2 in str1: # 문자열 str1 안에 str2 있는지 확인
answer = 1
📂 대문자 ↔ 소문자
- 대문자 확인 : isupper() 함수
- 대소문자 변환 : upper() / lower() 함수
for i in my_string:
if i.isupper():
answer += i.lower()
else:
answer += i.upper()
📁 swap
my_list[num1],my_list[num2] = my_list[num2],my_list[num1]
📍 SWEA
📁 알파벳 ↔ 숫자
1) ord()함수 이용 (아스키코드 숫자 변환)
T = input()
for i in T:
num = ord(i)-64 # ord() : 특정 문자의 아스키코드 값 변환 (A:65)
print(num, end=' ') # 문자 사이에 공백 출력
2) 딕셔너리 사용
T = str(input())
dic = {'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7,'H':8,'I':9,'J':10,'K':11,'L':12,'M':13,'N':14,'O':15,'P':16,'Q':17,'R':18,'S':19,'T':20,'U':21,'V':22,'W':23,'X':24,'Y':25,'Z':26}
for i in T:
print(dic[i], end=' ')
📂 절대값
abs() 함수 이용
print(abs(-5)) # 5
📁 A와 B 입력시 나눠 받기
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
T = int(input())
for i in range(T):
A,B = map(int, input().split())
print(A+B)
📕 참고
i부터 T-1까지 반복
i는 0부터 시작
📂 빠른 입출력 (sys.stdin.readline)
input 대신 sys.stdin.readline을 사용하여 한줄마다 출력
import sys # sys.stdin.readline 위해 필요
N = int(input())
# 리스트 사용하지 않을 경우
for i in range(N):
x, y = map(int, sys.stdin.readline().split())
print(x+y)
# 리스트 사용할 경우
a = [map(int, sys.stdin.readline().split()) for i in range(N)]
for x, y in a:
print(x+y)
📕 참고
문자열 저장할 경우, 맨 끝의 개행문자까지 같이 입력받기 때문에 .rstrip() 추가
📁 출력 포맷팅
- %d: 정수로 포맷팅
- %s: 문자열로 포맷팅
- %f: 실수형으로 포맷팅
문자열에 위의 데이터 형식을 포함시키고, %로 어떤 변수에 저장된 값을 가져올지 지정
# ex) Case #1: 5
1) print("Case #%d:"%(i+1), A+B)
2) print(f'Case #{i+1}:', A+B)
# ex) Case #1: 2 + 3 = 5
print(f'Case #{i+1}: {A} + {B} =', A+B)
📂 거꾸로 출력
오른쪽을 기준으로 정렬한 별 출력
N = int(input())
for i in range(1,N+1):
print(' '*(N-i)+"*"*i)
ex) N = 5

📕 참고
공백과 ,(콤마)로 연결할 경우 공백이 생겨서 + 사용해 문자열로 만듦
📁 여러 줄 입력 후, 한 줄씩 출력
import sys
for line in sys.stdin:
print(sum(map(int, line.split())))
📕 참고
리스트로 했을 때 런타임 에러남
📂 배열에서 숫자찾기 (count)
리스트.count(찾을 대상)
N = int(input()) # 정수의 개수
arr = list(map(int, input().split()[:N])) # 배열
sel = int(input()) # 찾을 정수
# count함수 사용
print(arr.count(sel))
📕 참고
입력받은 수 만큼 리스트 개수 제한하기 위해 [:N] 추가
📖출처📖
728x90
반응형