본문 바로가기

Algorithm

(175)
[프로그래머스] Lv.2 이진 변환 반복하기 https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 이진법으로 표현된 문자열이 주어질 것이다. 이때, 문자열 내의 '0'을 없애줘야 while문을 통해서 반복이 가능하다. 어떻게 해야할까??? 본인은 기억이 안났지만, 파이썬 내장 기능중 replace(a, b)라는 기능이 있다. 문자열 내의 특정 문자를 바꾸는데 사용할 것이다. 그리고 answer에 맞게 값을 카운팅 해주면 된다. 2. 정답코드 def solution(s): answ..
[프로그래머스] Lv.1 소수 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/12921 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 이 문제는 소수를 찾기 위해서 2중 for문을 사용해서 접근하였다. 하지만 방문체크와 같은 If 분기문을 사용해서 for문 안에서 케이스를 줄여나가지 않으면 반드시 시간 초과가 걸리게 되어있다. 참고로 이 문제의 시간 복잡도는 10^6 이기에 2중 for문을 그대로 쓸 경우에 시간복잡도부터 에러이다. 본인도 몰랐지만 '에라토스테네스의 체' 라는 알고리즘 방법을 사용하면 된다. 1. ..
[BOJ] 1806. 부분합 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 1. 해결방법 투 포인터를 이용한다. 주의해야될 점은 left, right를 0, 0을 초기 값을 설정해야한다. 0, 1로 설정했더니 첫 인덱스 값이 15가 넘어버리는 테스트 케이스에서 실패를 한 것 같았다. 2. 정답코드 import sys input = sys.stdin.readline N, S = map(int, input().split()) nums = list(map(int..
[프로그래머스] Lv.2 행렬 테두리 회전하기 https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 아무래도 중요한 부분은 사각형의 회전이 가장 중요한 포인트일 것이다. (x1, y1)를 기준으로 잡고 temp라는 변수에 값을 저장한다. 사각형은 시계방향으로 회전한다고 했지만 우리는 (x1, y1)위치에 기준을 잡아놨기 때문에 시계 반대 방향부터 값을 이동시킬 것이다. 이때 이동시키면서 min()메서드를 이용해서 이동한 두 개의 값중 최솟값을 구하면서 이동한다. 2. 정답코드 de..
[프로그래머스] Lv.2 영어 끝말잇기 https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 return 값은 번호 = (i%n)+1, 차례 = (i//n)+1이다. 위 부분만 상각하면 될 것 같다. 번호와 차례를 해결하지 못해서 조금 헤맸던 문제이다. 2. 정답코드 def solution(n, words): answer = [] word_list = [] word_list.append(words[0]) for i in range(1, len(words)): if words..
[프로그래머스] Lv.2 멀쩡한 사각형 https://school.programmers.co.kr/learn/courses/30/lessons/62048 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 직사각형이 있다면 대각선으로 가로질렀을 때 선과 접하는 부분을 제외한 사용 가능한 부분의 개수를 구해야 한다. 먼저 자료형에 대해 생각해야 한다. 반환해야 하는 자료형은 long인데 매개변수는 모두 int로 주어졌다. 연산을 하는 과정에서 w와 h가 계속 필요한데 그때마다 캐스팅이 불편하니 처음부터 형변환을 시켜주었다. 이후에, 예시 그림을 보면 8(가로), 12(세로)를 최대공약수..
[프로그래머스] Lv.2 124 나라의 숫자 https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 우선 n이 3의 배수가 아니라면 3진법을 구하는 것과 동일하게 3으로 나눈 나머지를 저장하고, n을 3으로 나눈 몫으로 저장한다. n이 3의 배수라면 무조건 4를 추가하고, n을 3으로 나눈 몫에서 1을 뺀 값을 저장한다. 2. 정답코드 def solution(n): answer = '' while n: if n % 3 == 0: answer = '4' + answer n = n /..
[프로그래머스] Lv.2 가장 큰 수 https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 가령 [3,300,31,387] 라는 숫자 리스트가 있다면 가장 큰 조합은 --> 387 3 31 310 이다. 가장 작은 수가 3 이더라도, 첫째자리 숫자 "3"은 310 31 의 두번째 자리 숫자 "1" 보다 크기 때문에, 3은 310 31 보다 앞에 나온다. 또 31은 31의 두번째 자리숫자 "1" 이 310 의 세번째 자리 숫자 "0" 보다 크기 때문에, 310 보다 앞에 나..