Ctrl+F를 사용하여 검색
# 대소문자 바꿔서 출력
# 대문자인지 소문자 인지 확인
# 띄어쓰기로 구분된 두 수 입력받기
# 여러 특수문자열 그대로 출력
# 변수를 출력하는 세가지 방법
# 입력받은 연속된 문자열을 줄 바꾸며 출력
# 정수 a,b를 입력받았을 때, 두가지 연산의 결과 중 큰 값을 출력하는 코드
# 람다 형식을 사용하여 함수로서의 기능을 하는 방법 (일회용 변수)
# 리스트의 수를 개별 인자로 출력하는 방법
# 리스트에서 일부만 변수로 받고 나머지는 하나의 변수에 리스트로 저장하는 방법(확장 언패킹)
# 2차원 리스트를 열단위로 다시 묶는 방법
# 숫자 리스트의 요소 a(int)를 뽑아 새 리스트에 저장하는 것을 a번만큼 반복하는 방법
# 문자열의 특정 문자를 바꾸는 방법
# 긴 문자열에 짧은 문자열이 포함되는지 확인하는 조건문
# 리스트에서 인덱스와 요소를 동시에 for문으로 불러오는 방법
# 리스트 내의 숫자를 모두 곱한 값을 구하는 빠른 방법
# 숫자 리스트에서 짝수, 홀수 조건에 맞는 값을 따로 뽑아 처리하는 방법
# 조건문에서 True 대신 쓸 수 있는 것.
# for 문이 끝까지 실행되었을 때 실행 결과를 만드는 법 1
# for 문이 끝까지 실행되었을 때 실행 결과를 만드는 법 2
# 행의 개수가 두개인 2차원 리스트에서 각각의 요소를 반복문의 변수로 받는 방법
# 리스트 뒤에 특정 요소를 추가하는 방법
# 리스트 뒤에 특정 요소를 추가하는 방법
# Boolean 조건문을 쉽게 생성하는 방법
# 리스트 내 요소의 반복 개수를 쉽게 확인하는 방법
# 문자열로 묶인 숫자의 각 요소를 분리하여 리스트로 만드는 방법
# 문자열의 뒤쪽에서 n개 만큼의 요소 뽑아내는 법
# 이중 배열에서 인덱스와 데이터 정보를 한번에 읽어오는 방법
# 리스트의 요소를 읽어와 if-else 조건에 따른 결과값을 리스트에 저장하는 방법
# 리스트의 요소 전체에 대해 동일한 처리를 하는 방법
# m개씩 끊어 읽었을 때 c번째에 있는 문자만을 출력
# 인덱스를 m로 나누었을 때 나머지가 c인 문자만을 출력
# 문자열 리스트에서 True가 되는 값(조건을 성립하는 값)만 남긴 후 합쳐서 출력하는 방법
# 부분 문자열을 집합 형태로 중복없이 구하는 방법
# 리스트의 요소를 중간에서 추가하거나 제거하는 방법
# 문자열을 오름차순으로 정렬한 리스트를 얻는 방법
# 아스키 코드를 사용하여 문자열에서 숫자로 바꾸는 법
# 변수의 복사본을 만드는 방법
# 두 리스트의 값을 앞에 부터 순차적으로 비교하여 정렬하고 date1 < date2 면 1을, 아니면 0을 출력하는 방법
# 두 리스트를 부등호로 직접 비교하여 date1 < date2 면 1을, 아니면 0을 출력하는 방법
# 문자열(myString)에서 특정문자(pat)를 포함하고 가장 뒤에 위치한 부분문자열을 찾는 방법
# 문자열을 여러개의 기준값으로 나누어 리스트로 만드는 방법 1
# 문자열을 여러개의 기준값으로 나누어 리스트로 만드는 방법 2
# 문자열을 여러개의 기준값으로 나누어 리스트로 만드는 방법 3
# 원하는 값을 순차적으로 딕셔너리에 저장할 때 새로 나온 key의 default value을 설정하는 방법
# 함수에서 lst가 True일 때와 False일 때의 조건을 구분하여 return 하는 방법
# 정수를 나선형으로 배치하는 방법(달팽이 문제)
# 최대 공약수를 구하는 두가지 방법
print(input().swapcase())
# input: AaBbCcDd
# output: aAbBcCdD
# 대소문자 바꿔서 출력
a = 'A'
print(a.isupper()) # 대문자인지 # True
print(a.islower()) # 소문자인지 # False
# 대문자인지 소문자 인지 확인
a, b = map(int,input().strip().split(' '))
print(a + b)
# input : 3 5
# output : 8
# 띄어쓰기로 구분된 두 수 입력받기
print(r'!$#%^&@*&()\/;\'?')
# output : !$#%^&@*&()\/;\'?
# 여러 특수문자열 그대로 출력
a, b = map(int, input().strip().split(' '))
print(a, '+', b,'=',a+b) # 방법1
print(f"{a} + {b} = {a + b}") # 방법2
print('{} + {} = {}'.format(a, b, c)) # 방법3
# input : 3 5
# output : a + b = 8
# 변수를 출력하는 세가지 방법
for a in input(): print(a) # 방법1
print('\n'.join(input())) # 방법2
# input : 345
# output :
# 3
# 4
# 5
# 입력받은 연속된 문자열을 줄 바꾸며 출력
def solution(a, b):
return max(int(str(a) + str(b)), 2 * a * b)
# input : 3, 5
# output : 35
# 정수 a,b를 입력받았을 때, 두가지 연산의 결과 중 큰 값을 출력하는 코드
## lambda 매개변수 : 표현식
(lambda x,y: x + y)(10, 20) # x,y를 lambda 형식으로 받아와 연산값을 출력
# output : 30
solution = lambda x : int(x) # 문자열을 받아와 int로 변환하는 방법
# input : "356"
# output : 356
# 람다 형식을 사용하여 함수로서의 기능을 하는 방법 (일회용 변수)
## 리스트 [1, 2, 3, 4, 5]의 각 요소를 unpack하여 개별 인자로 print 함수에 전달
print(*[1,2,3,4,5])
print(1,2,3,4,5)
#output : 1 2 3 4 5
# 리스트의 수를 개별 인자로 출력하는 방법
lst = [1, 2, 3, 4, 5]
a, *rest, b = lst
print(a) # output: 1
print(b) # output: 5
print(rest) # output: [2, 3, 4]
# 리스트에서 일부만 변수로 받고 나머지는 하나의 변수에 리스트로 저장하는 방법(확장 언패킹)
mat = [
[1, 2, 3],
[4, 5, 6]
]
# zip(*mat)은 mat의 각 행을 unpack하여 열 단위로 묶어 새로운 튜플을 생성
transpose_mat = list(zip(*mat)) # zip(*mat)으로 생성된 zip 객체를 리스트로 변환
print(transpose_mat)
# 출력: [(1, 4), (2, 5), (3, 6)]
# 2차원 리스트를 열단위로 다시 묶는 방법 : zip(*list)
## arr의 요소인 a로 리스트를 생성하는 것을 range(a)만큼 반복
arr= [1,2,3]
def solution(arr):
return [a for a in arr for _ in range(a)]
print(solution(arr))
# output = [1, 2, 2, 3, 3, 3]
# 숫자 리스트의 요소 a(int)를 뽑아 새 리스트에 저장하는 것을 a번만큼 반복하는 방법
def solution(rny_string):
return rny_string.replace('m', 'rn')
# input: 'rnasterpiece'
# output: 'masterpiece'
# 문자열의 특정 문자를 바꾸는 방법 : .replace(A,B)
## max_value = (조건문이 True일 때 출력) if (조건문) else (조건문이 False일때 출력)
def solution(myString, pat):
return (1 if pat in myString else 0) # myString에 pat 문자열이 포함되면 True
# input : 'AAAABBBB' 'ABB'
# output : 1
# 긴 문자열에 짧은 문자열이 포함되는지 확인하는 조건문
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
print(index, fruit)
# 리스트에서 인덱스와 요소를 동시에 for문으로 불러오는 방법 : enumerate()
num_list = [3, 4, 5, 2, 1]
cross = eval('*'.join([str(num) for num in num_list]))
# eval("3*4*5*2*1")과 동일한 결과
print(cross) # output 120
# 리스트 내의 숫자를 모두 곱한 값을 구하는 빠른 방법 : eval(str), str.join(list)
def solution(num_list):
even = int("".join([str(i) for i in num_list if i%2==0]))
odd = int("".join([str(i) for i in num_list if i%2==1 ]))
return even+odd
# input : [3, 4, 5, 2, 1]
# output : 393
# 숫자 리스트에서 짝수, 홀수 조건에 맞는 값을 따로 뽑아 처리하는 방법 : [연산 + for문 + if문]
if True: print("실행됨")
# 다른 형태로도 사용가능한 Boolean
a = 1
if a: print("실행됨") # 1이 할당된 변수도 True로 사용 / a가 1일때 실행
if 1: print("이것도 실행됨") # 1도 True로 사용
# 조건문에서 True 대신 쓸 수 있는 것. : 1
for x in range(1, 10, 2):
if x%2 == 0: break # 짝수를 만나면 break
else: print("모든 값이 홀수")
# output : 모든 값이 홀수
# for 문이 끝까지 실행되었을 때 실행 결과를 만드는 법 1 : for-else문
x = 1
while x < 10:
if x%2 == 0: break # 짝수를 만나면 break
x+= 2
else: print("모든 값이 홀수")
# output : 모든 값이 홀수
# for 문이 끝까지 실행되었을 때 실행 결과를 만드는 법 2 : while-else문
for i,j in [[0, 3],[1, 2],[1, 4]]:
print(i, j)
## output
# 0 3
# 1 2
# 1 4
# 행의 개수가 두개인 2차원 리스트에서 각각의 요소를 반복문의 변수로 받는 방법
fruits = ['apple', 'banana', 'cherry'] # 리스트
points = (1, 4, 5, 9) # or [1, 4, 5, 9]도 가능
fruits.extend(points) # 처리 1 / 리스트 뒤에 추가
fruits.extend(points[2:]) # 처리 2 / 특정 부분만 추가 가능
### print(fruits)의 결과 : 처리 1, 2는 독립적으로 실행
# output 1: ['apple', 'banana', 'cherry', 1, 4, 5, 9]
# output 2: ['apple', 'banana', 'cherry', 5, 9]
# 리스트 뒤에 특정 요소를 추가하는 방법 : .extend() -> 기존의 리스트 변수를 수정
lst = [1, 2, 3]
new_list = [4, 5, 6]
result = lst + new_list # result는 [1, 2, 3, 4, 5, 6]
print(lst) # lst는 여전히 [1, 2, 3]
# 리스트 뒤에 특정 요소를 추가하는 방법 : lst + new -> 새로운 리스트 변수를 생성 / 기존 변수에 영향 없음
# 비트 OR 연산자 (|) : 두 비트가 하나라도 1이면 결과 비트는 1입니다.
step1 = x1 | x2 # False | True = True
# 비트 AND 연산자 (&) : 두 비트가 모두 1이어야 결과 비트가 1입니다.
step2 = x1 & x2 # False & True = False
# Boolean 조건문을 쉽게 생성하는 방법 : '|', '&'
words = ["apple", "banana", "apple", "cherry", "apple"]
count_of_apple = words.count("apple")
print(count_of_apple) # output: 3
count_list = [words.count(x) for x in words]
print(count_list) # output: [3, 1, 3, 1, 3]
# 리스트 내 요소의 반복 개수를 쉽게 확인하는 방법: list.count(x)
number = "142368382932"
lst = list(map(int, number))
print(lst) # [1, 4, 2, 3, 6, 8, 3, 8, 2, 9, 3, 2]
# 문자열로 묶인 숫자의 각 요소를 분리하여 리스트로 만드는 방법 : list(map())
my_str = "banana"
print(my_str[-4:-1]) # nana
suffi = "ana"
print(my_str[-len(suffi):]) # ana
# 문자열의 뒤쪽에서 n개 만큼의 요소 뽑아내는 법 : -index (마이너스 인덱스) 슬라이싱
parts = [[0, 4], [1, 2], [3, 5], [7, 7]]
for i, (s,e) in enumerate(parts):
print(i, s, e , end = "/ ")
# output : 0 0 4/ 1 1 2/ 2 3 5/ 3 7 7/
# 이중 배열에서 인덱스와 데이터 정보를 한번에 읽어오는 방법
lst = ["americanoice", "cafelatteice", "iceamericano"]
answer = [5000 if 'latte' in x else 4500 for x in ]
print(answer) # [4500, 5000, 4500]
# 리스트의 요소를 읽어와 if-else 조건에 따른 결과값을 리스트에 저장하는 방법 : if-else-for
arr = [1, 2, 3, 100, 99, 98]
k = 3
if k%2 == 1: answer = map(lambda x: x*k, arr)
else: answer = map(lambda x: x+k, arr)
print(list(answer)) # [3, 6, 9, 300, 297, 294]
# 리스트의 요소 전체에 대해 동일한 처리를 하는 방법 : map(lambda x: (연산내용), list)
code, m, c = "ihrhbakrfpndopljhygc", 4, 2
## m개씩 끊어 읽었을 때 c번째에 있는 문자만을 출력
print(code[c-1::m]) # output :happy
code, m, c = "qjnwezgrpirldywt", 3, 1
## 인덱스를 m로 나누었을 때 나머지가 c인 문자만을 출력
print(code[c::m]) # output : jerry
# m개씩 끊어 읽었을 때 c번째에 있는 문자만을 출력 : string[c-1::m]
# 인덱스를 m로 나누었을 때 나머지가 c인 문자만을 출력 : string[c::m]
## filter(function, iterable) : function에 해당하는 값만 남김
str_list = ["abc", "def", "ghi"]
ex = 'ef'
print("".join(filter(lambda x : ex not in x, str_list)))
# output : abcghi
# 문자열 리스트에서 True가 되는 값(조건을 성립하는 값)만 남긴 후 합쳐서 출력하는 방법
answer = set()
my_string = "banana"
for i in range(1, len(my_string)+1):
for j in range(len(my_string)-i+1):
answer.add(my_string[j:j+i])
print(sorted(answer))
# output : ['a', 'an', 'ana', 'anan', 'anana', 'b', 'ba', 'ban', 'bana', 'banan', 'banana', 'n', 'na', 'nan', 'nana']
# set이 아닌 list로 만들면 중복을 포함한 모든 확인된 부분 문자열을 구할 수 있다.
# 부분 문자열을 집합 형태로 중복없이 구하는 방법
str_list = ["abc", "def", "ghi"]
str_list.insert(1, "utt") # ['abc', 'utt', 'def', 'ghi']
del str_list[1] # ['abc', 'def', 'ghi']
# 리스트의 요소를 중간에서 추가하거나 제거하는 방법. : .insert, del / (주의) 리스트의 길이에 비례하여 연산이 늘어난다.
my_str = "olleh"
sort_str = sorted(my_str)
print(sort_str) # ['e', 'h', 'l', 'l', 'o']
# 문자열을 오름차순으로 정렬한 리스트를 얻는 방법 : sorted()
# ord(문자) -> 아스키 코드(숫자)
# chr(숫자) -> 문자
my = "Programmers"
up, dn= [0]*26,[0]*26 # 대 소문자 각 26개씩
for x in my:
if x.isupper(): up[ord(x)-65] += x # A~Z : 65~90
else: dn[ord(x)-97] += x # a~z : 97~122
print(up) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'P', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print(dn) # ['a', 0, 0, 0, 'e', 0, 'g', 0, 0, 0, 0, 0, 'm', 0, 'o', 0, 0, 'r', 's', 0, 0, 0, 0, 0, 0, 0]
# 아스키 코드를 사용하여 문자열에서 숫자로 바꾸는 법 : ord(str)
arr = [1, 2, 3, 100, 99, 98]
arr_1 = arr # arr을 참조 / arr을 변경할 시 동일하게 변경됨
arr_2 = arr.copy() # arr의 복사본 / arr의 변경과 무관함
arr[1] = 999 # 리스트 요소 변경
print(arr_1) # [1, 999, 3, 100, 99, 98]
print(arr_2) # [1, 2, 3, 100, 99, 98]
print(arr) # [1, 999, 3, 100, 99, 98]
# 변수의 복사본을 만드는 방법 : .copy()
date1, date2 = [2021, 12, 28], [2021, 12, 29]
def solution(date1, date2):
d = [date1, date2]
d_sort = sorted(d, key= lambda x : (x[0],x[1],x[2]))
return int(d_sort[0] == date1 and date1 != date2)
# date1이 date2보다 앞선 순서일 때 1, 아니면 0 출력
# 두 리스트의 값을 앞에 부터 순차적으로 비교하여 정렬하고 date1 < date2 면 1을, 아니면 0을 출력하는 방법
date1, date2 = [2021, 12, 28], [2021, 12, 29]
def solution(date1, date2):
return int(date1 < date2)
# 두 리스트를 부등호로 직접 비교하여 date1 < date2 면 1을, 아니면 0을 출력하는 방법 (위의 방법과 동일한 결과)
myString, pat = "AbCdEFG", "dE"
idx = (myString[::-1].find(pat[::-1])) # 뒤에서 부터 추적한 인덱스값
idx_r = len(myString)-idx # 앞에서 부터 추척한 인덱스 값으로 변환
print(myString[:-idx]) # AbCdE
print(myString[:idx_r]) # AbCdE
# 문자열(myString)에서 특정문자(pat)를 포함하고 가장 뒤에 위치한 부분문자열을 찾는 방법
myStr = "baconlettucetomato"
lst = [myStr]
for s in ['a','b','c']:
new = []
for j in lst:
for k in j.split(s):
new.append(k)
lst = new
print([i for i in lst if i != ""])
# output : ['onlettu', 'etom', 'to']
# 문자열을 여러개의 기준값으로 나누어 리스트로 만드는 방법 1 : 기준값에 따라 리스트를 순차적으로 나누며 값 갱신
import re
arr = "baconlettucetomato"
print(re.split('a|b|c', arr))
print([i for i in re.split('a|b|c', arr) if i != ''])
# 문자열을 여러개의 기준값으로 나누어 리스트로 만드는 방법 2 : re.split('a|b|c', strinig)
arr = "baconlettucetomato"
print(arr.replace('a'," ").replace('b'," ").replace('c'," ").split())
# 문자열을 여러개의 기준값으로 나누어 리스트로 만드는 방법 3: .replace(A,B) 반복 실행
strArr = ["a","bc","d","efg","hi"]
cnt_dic = {}
for l in strArr:
cnt_dic[len(l)] = cnt_dic.get(len(l), 0) + 1 # 기존 값이 존재하지 않을 시 기본값 0 으로 설정
# cnt_dic[len(l)] = cnt_dic[len(l)] + 1 # 사전에 key 값을 설정해 두었으면 원하는 처리만 하면 됨
print(cnt_dic) # {1: 2, 2: 2, 3: 1}
max(cnt_dic.values()) # 2 : value에서 최대값을 출력
# 원하는 값을 순차적으로 딕셔너리에 저장할 때 새로 나온 key의 default value을 설정하는 방법: dictionary.get(key, default)
def sol(lst):
return lst or [-1] # return (True일때) or (False일때)
print(sol([])) # [-1]
print(sol([1,2,3])) # [1,2,3]
# 함수에서 lst가 True일 때와 False일 때의 조건을 구분하여 return 하는 방법 : return list or -1
def solution(n):
answer = [[0]*n for _ in range(n)]
r,c =0, 0
dr, dc = [0,+1,0,-1], [+1,0,-1,0] # 우 하 좌 상 의 순서로 방향이 이동함
i = 0 # 방향은 현재 진행중인 방향으로의 이동이 불가능 할때만 변경 (중요)
for k in range(1, n**2+1):
answer[r][c] = k
for _ in range(4):
nr = r+dr[i%4] # 이동할 row
nc = c+dc[i%4] # 이동할 Col
if 0<= nr < n and 0<= nc < n and answer[nr][nc]==0:
r, c = nr, nc # 유효한 경로 일 때 row, col 갱신
break
else: i += 1 # 유효한 경로가 아닐 때 방향 변경
return answer
print(solution(4))
# 정수를 나선형으로 배치하는 방법(달팽이 문제)
for i in range(min(n1, n2), 0, -1):
if n1 % i == 0 and n2 % i == 0:
gcd_n1_n2_for = i
break
import math
gcd_n1_n2_math = math.gcd(n1, n2)
# 최대 공약수를 구하는 두가지 방법: for문으로 나누어지는 가장 큰값 도출, gcd(n1,n2)
Last update : 2024.9.1
'Code-note' 카테고리의 다른 글
[프로젝트] BlackJack 구현 - python (2) | 2024.10.01 |
---|---|
[프로젝트]QR code 생성기 -python (2) | 2024.09.11 |
[문제리뷰] 방문 길이-python ; (programmers/Lv2) (2) | 2024.09.10 |
[자료구조]클래스(class) 개념 이해하기 -python (2) | 2024.09.03 |
[기초문법]쓸만한 코드 LV.1-2 -python (0) | 2024.08.18 |