👉 사용 언어 : PYTHON3
x만큼 간격이 있는 n개의 숫자
✅ Solution
def solution(x, n):
answer = []
cnt = 0
while cnt < n:
answer.append(x+x*cnt)
cnt+=1
return answer
✅ 반복문
1) while 문
while 조건:
본문
본문
2) for 문
for 변수 in iterable:
본문1
본문2
...
👉 iterable : 리스트 / 튜플 / 문자열
( 첫 번쨰 요소 ~ 마지막 요소 포함 )
2-1) range 문
range(end) # 0~end-1까지 정수생성
range(start, end) # start부터 end-1까지 정수생성
range(start, end, step) # start부터 end-1까지 정수를 생성하되 step만큼 증가
++ enumerate ++
t = [1, 5, 32, 14, -1, 23]
for value in enumerate(t):
print(value)
#(0, 1)
#(1, 5)
#(2, 32)
#(3, 14)
#(4, -1)
#(5, 23)
👉 인자로 튜플 / 리스트 / 문자열 받으면 해당 element 가 몇 번째 반복에 해당하는지 나타냄
++ break 와 continue ++
👉 break 만나면 순회(반복) 종료
👉 continue 만나면 해당 라운드 넘어가고 다음 라운드 실행
✅ 리스트 원소 추가 및 삭제
1) 추가
- append : 리스트 마지막에 원소 추가
- insert : 원하는 인덱스에 원소 추가 ( .insert(입력할 인덱스, 값) )
- + 연산자 : 리스트 합치는 경우 ( 순서 고려O )
- extend : 리스트 합치는 경우 ( .extend(추가할 리스트) )
2) 삭제
- del : del 리스트명[제거할 원소 인덱스]
- remove : 해당 원소 값이 리스트에 없을 경우 ValueError 발생 ( .remove(제거할 원소 값) )
- del + index : remove 와 동일한 효과 ( del 리스트명[리스트.index(제거할 원소 값)] )
서울에서 김서방 찾기
✅ Solution
def solution(seoul):
return '김서방은 ' + str(seoul.index('Kim')) + '에 있다'
✅ 다른 사람 풀이 참고
return "김서방은 {}에 있다".format(seoul.index('Kim'))
## .format(문자열에 넣고 싶은 변수값) 과 "{}" 통해 문자열을 나타낼 수 있다!
✅ String 과 숫자를 동시에 출력할 경우
👉 + 가 아니라 , 를 사용하여 출력한다.
👉 또는 str( ) 및 int( ) 등을 통해 하나의 데이터타입으로 통일한다.
시저 암호
✅ Solution
def solution(s, n):
answer = ''
for i in s:
if (ord('Z') < ord(i)+n and ord(i) < ord('a')) or ord(i)+n > ord('z'):
i = chr(ord(i)+n-26)
elif i == ' ':
i = i
else:
i = chr(ord(i)+n)
answer += i
return answer
✅ 다른 사람 풀이 참고
def caesar(s, n):
s = list(s)
for i in range(len(s)):
if s[i].isupper():
s[i]=chr((ord(s[i])-ord('A')+ n)%26+ord('A'))
elif s[i].islower():
s[i]=chr((ord(s[i])-ord('a')+ n)%26+ord('a'))
return "".join(s)
# 주어진 문장을 암호화하여 반환하세요.
👉 isupper( ) 과 islower( ) 통해 a-z 와 A-Z 를 나눌 수 있다.
👉 .join( ) 을 통해 리스트 안 문자 원소를 하나의 문자열(String)으로 나타낼 수 있다.
✅ 아스키코드

✅ 아스키코드 ←→ 문자 변환
1) 아스키코드 ← 문자
: ord( )
2) 아스키코드 → 문자
: chr( )
✅ 문자열에 문자 추가 또는 문자열 합치기
👉 + 연산자 사용 !
✅ 경우의 수
1) 입력: 대문자 , 출력: 대문자 이후 문자 (특수문자 및 소문자)
또는 출력: 소문자 이후 ( n <= 25 이므로 입력은 조건을 넣지 않아도 소문자라는 걸 알 수 있다.)
2) 입력: 대/소문자 , 출력: 대/소문자
3) 입력: 공백 , 출력: 공백
가장 가까운 같은 글자
✅ Solution
def solution(s):
answer = []
for i in range(0, len(s)):
cnt = -1
for j in range(i-1, -1, -1):
if s[i] == s[j]:
cnt = i-j
break
answer.append(cnt)
return answer
문자열 내 마음대로 정렬하기
✅ Solution
def solution(strings, n):
answer = []
dic = {}
for i in strings:
dic[i] = i[n]
dic = sorted(dic.items(), key = lambda x: (x[1], x[0]))
for item in dic:
answer.append(item[0])
return answer
✅ 다른 사람 풀이 참고
def strange_sort(strings, n):
'''strings의 문자열들을 n번째 글자를 기준으로 정렬해서 return하세요'''
return sorted(strings, key=lambda x: x[n])
✅ 숫자 및 문자 정렬
# 숫자 리스트 정렬
print("1. 숫자 리스트 정렬")
list_num.sort()
print(list_num)
# 문자열 리스트 정렬1 (소문자만)
print("\n2. 소문자 문자열 리스트 정렬")
list_str1.sort()
print(list_str1)
# 문자열 리스트 정렬2 (대/소문자 포함)
print("\n3. 대소문자 문자열 리스트 정렬")
list_str2.sort()
print(list_str2)
👉 모두 동일하게 .sort( ) 함수를 사용하여 정렬한다. ( = 사전순 정렬 )
👉 원본 리스트를 변경하지 않고 정렬하려면 sorted(리스트명) 함수를 사용한다.
✅ 딕셔너리 정렬

👉 딕셔너리 { key1 : value1, key2 : value2, ... }
❌ key 값이 중복될 수 없다. 중복되는 값을 추가하면 제일 최근에 추가한 (키, 값) 쌍만 남고 그 전 쌍은 모두 지워진다. ❌
👉 리스트 [ value1, value2, ... ] _ 값 변경 가능
👉 튜플 ( value1, value2, ... ) _ 값 변경 불가능
제일 작은 수 제거하기
제한 조건
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
✅ Solution
def solution(arr):
answer = []
sortedArr = sorted(arr)
for i in arr:
if i != sortedArr[0]:
answer.append(i)
else:
continue
if len(answer) == 0:
answer.append(-1)
return answer
✅ 다른 사람 풀이 참고
def rm_small(mylist):
# 함수를 완성하세요
return [i for i in mylist if i > min(mylist)]
👉 min( ) 사용할 생각을 못함... 역시 api 많이 공부해놔야 편하다!
( max( ) , sum( ) , avg( ) , ... )
👉 위의 다른 사람 풀이 코드에서 return 문 다시 이해가 필요할 것 같다.
'알고리즘풀이 > 프로그래머스' 카테고리의 다른 글
| [11/16] Lv1. (0) | 2023.11.10 |
|---|---|
| [11/8] Lv1. (0) | 2023.11.04 |
| [10/31] Lv1. (0) | 2023.11.01 |
| [10/22] Lv1. (0) | 2023.10.19 |
| [9/30] Lv1. (0) | 2023.09.27 |