본문 바로가기
Programming/백준 문제풀이

[프로그래머스 Lv1] 오답노트2

by 수박주스으 2025. 2. 28.

※ 파이썬 문법 관련 내용은 '이것이 코딩테스트다' 교재를 참고하여 정리하였음.

6. join 함수

  • 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 반환하는 함수.
  • 사용법:
    • 구분자.join(리스트)
    • 예시)
      ls리스트가 ['8', '7', '3', '2', '1', '1']라면 >>> ''.join(ls)
      출력 결과 : 873211
def solution(n):
    ls = list(str(n))		# 정수 n을 문자열로 변환 후 리스트로 타입변경
    ls.sort(reverse = True)	# 내림차순 정렬
    
    return int(''.join(ls))
 

[python] 파이썬 join 함수 정리 및 예제 (문자열 합치기)

안녕하세요. BlockDMask입니다. 오늘은 파이썬에서 리스트를 문자열로 일정하게 합쳐주는 join 함수에 대해서 알아보려고 합니다. join 함수는 문자열을 다룰 때 유용하게 사용할 수 있는 함수이니

blockdmask.tistory.com

 

관련 문제

정수 내림차순으로 배치하기 : https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

 

7. 정수 제곱근

  • 파이썬 math라이브러리 내 정수 제곱근을 구하는 함수가 정의되어 있다. > math.sqrt
  • sqrt함수를 사용하려면 math라이브러리를 import해야하는데, 간단한 제곱근 문제는 숫자^1/2 가 제곱근이라는 것을 활용하자.
sqrt = n ** (1/2)
if sqrt % 1 == 0:
	return (sqrt+1) ** 2
return -1

 

 

관련 문제

정수 제곱근 판별 : https://school.programmers.co.kr/learn/courses/30/lessons/12934

 

 

8. Zip함수

  • iterable, 순회 가능한 객체를 인자로 받고 같은 인덱스의 값을 차례로 반환하는 함수.
# 다른 사람 풀이 (음양 더하기)
def solution(absolutes, signs):
    answer=0
    for absolute,sign in zip(absolutes,signs):
        if sign:
            answer+=absolute
        else:
            answer-=absolute
    return answer

 

 

관련 문제

음양 더하기 : https://school.programmers.co.kr/learn/courses/30/lessons/76501

 

 

9. find(), index() 함수 / 특정 문자열의 위치 찾기

  • 문자열에서 특정 문자의 위치(인덱스)를 찾기 위한 함수에는 find()와 index()가 있다. 두 함수 모두 찾을 문자열이 처음으로 등장하는 위치를 반환한다.
  • 둘다 사용법은 "문자열".find/index("찾을 문자열")이다.
  • find와 index의 차이
함수 반환값(존재할 때) 반환값 (존재하지 않을 때) 예외 발생 여부
find() 첫 번째 등장 위치 -1 X
index() 첫 번째 등장 위치 ValueError O

 

 

관련 문제

서울에서 김서방 찾기 : https://school.programmers.co.kr/learn/courses/30/lessons/12919

 

 

10. 무한 반복문을 쓸 일이 있을 때, 무작정 while : True 를 쓰는 것 보다는, 반복을 멈추게 할 수 있는 변수의 조건이 무엇이 있을 지 고민해보기.

# 콜라츠 추측 문제, 첫 번째로 제출했던 코드
def solution(num):
    if num == 1:
        return 0
    
    count = 0
    while True:
        if num % 2 == 0:
            num /= 2
        else:
            num = 3 * num + 1
        
        count += 1
        if count == 500:
            return -1
        elif num == 1:
            break
    
    return count
    
  # 무한반복 멈춤 조건 설정
  def solution(num):
    answer = 0
    
    while num != 1:
        if num % 2 == 0:
            num /= 2
        else:
            num = 3 * num + 1
        answer += 1
        
        if answer == 500:
            return -1
        
    return answer

 

 

관련 문제

콜라츠 추축 : https://school.programmers.co.kr/learn/courses/30/lessons/12943

 

'Programming > 백준 문제풀이' 카테고리의 다른 글

[프로그래머스 Lv1] 오답노트  (0) 2025.02.27