Python - 개념

수현·2022년 11월 8일
0

Coding Test

목록 보기
6/14
post-thumbnail

📍 프로그래머스

📁 배열/문자열 역순

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] 추가

📖출처📖

프로그래머스 python
SWEA python

profile
Notion으로 이동 (https://24tngus.notion.site/3a6883f0f47041fe8045ef330a147da3?v=973a0b5ec78a4462bac8010e3b4cd5c0&pvs=4)

0개의 댓글