본문 바로가기

Algorithm

(109)
[프로그래머스] 음양 더하기(zip함수) https://school.programmers.co.kr/learn/courses/30/lessons/76501 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 단순 반복문과 조건문으로 구현했다. 조건문은 삼항연산자로 작성하여 최대한 코드의 간결성을 유지했다. def solution(absolutes, signs): sum = 0 for i in range(len(absolutes)): sum = sum + absolutes[i] if signs[i] == True else sum - absolutes[i] retu..
[프로그래머스] 콜라츠 추측 https://school.programmers.co.kr/learn/courses/30/lessons/12943 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 짝수인 경우와 홀수인 경우를 나눠서 생각을 해주었고, 500회 이상의 연산과 같은 예외처리를 따로 해줬다.의식의 흐름대로 코드를 짰더니 뭔가 장황해보인다. 그래서 좀 더 축약할 수 있는 방법을 생각해보았다.def solution(n): cnt = 0 while n != 1: if n % 2 == 0: n /= 2 cnt += 1 ..
[Python] format 함수(인자 전달) format의 역할은 간단히 나타내면 직관적으로 바로 이해가 가능하다.format에 전달하는 인자의 인덱스를 문자열 표현에 포함시키는 것이다.  지금부터는 자세한 예시를 살펴보자. 10진수, 8진수, 16진수 출력[In]num = 256print("===num===")print("10진수:",format(num,'d'))print("8진수:",format(num,'o'))print("16진수:",format(num,'x')) [Out]===num===10진수: 2568진수: 40016진수: 100  인자 전달[In]a=5b=3print("a:{0} b:{1}".format(a,b))print("{0}+{1}={1}+{0}={2}".format(a,b,a+b)) [Out]===num===a:5 b:35+3..
[프로그래머스] 서울에서 김서방 찾기(format, index, return문에서 문자열과 정수를 함께 쓰는법) https://school.programmers.co.kr/learn/courses/30/lessons/12919/solution_groups?language=python3&type=my 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 리스트 안에 김씨의 위치를 찾는 문제다. 다만, return문을 작성할 때 문자열과 정수를 함께 쓰니 오류가 났었다. 정수를 문자열로 바꿔 통일시켜주니 해결됐다. def solution(seoul): for i in range(len(seoul)): if seoul[i] == "Kim": l..
[프로그래머스] 나머지가 1이 되는 수 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/87389 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr while문을 사용해서 나머지가 1이 아닌 경우에만 반복문을 실행시키도록 했다.나머지가 1인 수가 나오는 순간 종료.def solution(n): i = 1 while n % i != 1: i += 1 return i  대부분의 사람들은 아래와 같이 푼 것 같다. 나의 논리와 같은데,  while문으로 작성하는 것이 좀 더 간결하다.def solution(n): an..
[프로그래머스] x만큼 간격이 있는 n개의 숫자(range 활용) https://school.programmers.co.kr/learn/courses/30/lessons/12954 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 간단한 문제이므로 설명은 생략 def solution(x, n): list = [] a = x for _ in range(n): list.append(a) a += x return list 다른 사람의 풀이를 참고해보면, 한줄컷도 많다. range 함수에는 step을 통해 어느 간격만큼 범위를 더해나갈 것인지(또는 빼나갈 것인지) 결정할 수 있으므로, 이..
[프로그래머스] 하샤드 수 https://school.programmers.co.kr/learn/courses/30/lessons/12947 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 간단한 문제이므로 설명은 생략 def solution(x): arr = list(map(int, str(x))) divide = sum(arr) if x % divide == 0: return True else: return False  다른 사람의 풀이를 확인해보니 이렇게 간단히 구현할 수도 있다. def Harshad(n): return n%su..
[프로그래머스] 평균구하기 (sum) https://school.programmers.co.kr/learn/courses/30/lessons/12944 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음엔 다음과 같이 sum메소드를 쓰지 않고 풀어봤다.  def solution(arr): sum = 0 for i in range(0, len(arr)): sum += arr[i] avg = sum / len(arr) return avg 하지만 역시 sum메소드를 이용하는 편이 훨씬 간결하다. def solution(arr): return sum(arr) / ..