파이썬
-
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 정수 n이 매개변수로 주어질 때, 그림과 같은 밑변의 길이와 높이가 n인 삼각형에 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한다. 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 구하라는 문제이다. 🤔 내가 생각한 풀이 과정 나는 아래와 같은 순서를 가지고 문제를 해결하려 했다. 값을 넣을 2차원 배열을 만든다. -> 배열에 들어가는 최댓값을 구한다.(n=4일 때 10, n=5일 때 15) -> 1부터 구한 최댓값까지 반복하면서 올바른 행, ..
[Programmers/Lv. 2] 삼각 달팽이 (월간 코드 챌린지 시즌1, Python)📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 정수 n이 매개변수로 주어질 때, 그림과 같은 밑변의 길이와 높이가 n인 삼각형에 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한다. 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 구하라는 문제이다. 🤔 내가 생각한 풀이 과정 나는 아래와 같은 순서를 가지고 문제를 해결하려 했다. 값을 넣을 2차원 배열을 만든다. -> 배열에 들어가는 최댓값을 구한다.(n=4일 때 10, n=5일 때 15) -> 1부터 구한 최댓값까지 반복하면서 올바른 행, ..
2023.08.15 -
1. 문자열 밀기 (문제 설명, 제한사항, 입출력 예) 문자열 A와 B가 주어질 때, A를 밀어서 B가 될 수 있다면, 밀어야 하는 최소 횟수를 구하라는 문제이다. 만약, 밀어서 B가 될 수 없으면 -1을 반환하면 된다. (내가 생각한 풀이 과정) 차례대로 조건을 세 개로 나누어서 문제를 풀었다. 첫 번째, A와 B가 같은 경우 -> 0을 반환 두 번째, A와 B를 한 칸씩 밀면서 두 문자열을 비교 -> shift의 숫자대로 밀면서 문자열을 "A[-shift:] + A[0:-shift]" 형태로 비교 세 번째, A의 길이만큼 밀었는데도 (한바퀴 돈 경우) 같은 값이 나오지 않는 경우 -> -1 반환 (될 수 없다고 판단) (코드) 더보기 💡 내 코드 def solution(A, B): shift = 1 ..
[Programmers/Lv. 0] 코딩테스트 입문 Day 25 - 시뮬레이션, 조건문, 수학 (Python)1. 문자열 밀기 (문제 설명, 제한사항, 입출력 예) 문자열 A와 B가 주어질 때, A를 밀어서 B가 될 수 있다면, 밀어야 하는 최소 횟수를 구하라는 문제이다. 만약, 밀어서 B가 될 수 없으면 -1을 반환하면 된다. (내가 생각한 풀이 과정) 차례대로 조건을 세 개로 나누어서 문제를 풀었다. 첫 번째, A와 B가 같은 경우 -> 0을 반환 두 번째, A와 B를 한 칸씩 밀면서 두 문자열을 비교 -> shift의 숫자대로 밀면서 문자열을 "A[-shift:] + A[0:-shift]" 형태로 비교 세 번째, A의 길이만큼 밀었는데도 (한바퀴 돈 경우) 같은 값이 나오지 않는 경우 -> -1 반환 (될 수 없다고 판단) (코드) 더보기 💡 내 코드 def solution(A, B): shift = 1 ..
2023.06.07 -
1. 치킨 쿠폰 (문제 설명, 제한사항, 입출력 예) 치킨 한 마리당 쿠폰을 한 장 발급해 주는 치킨집이 있다. 쿠폰을 열장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스로 주는 치킨에도 쿠폰을 발급해 준다. 시켜 먹은 치킨의 수가 주어질 때, 받을 수 있는 최대 서비스 치킨의 수를 구하라는 문제이다. (내가 생각한 풀이 과정) 총 서비스를 받은 치킨의 수를 저장할 정수 변수 answer를 만들어둔다. 이제 10마리를 기준으로 입력값 chicken을 계속 반복시킬 거다. 어떻게 반복할 거냐면. 1) 입력값 chicken을 10으로 나누어서 서비스로 받은 치킨의 값을 answer에 추가한다. 2) chicken에는 10으로 나누고 남은 나머지 값과 + 서비스로 받은 치킨의 값을 저장해 둔다 (서비..
[Programmers/Lv. 0] 코딩테스트 입문 Day 24 - 수학, 시뮬레이션, 문자열, 조건문, 반복문 (Python)1. 치킨 쿠폰 (문제 설명, 제한사항, 입출력 예) 치킨 한 마리당 쿠폰을 한 장 발급해 주는 치킨집이 있다. 쿠폰을 열장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스로 주는 치킨에도 쿠폰을 발급해 준다. 시켜 먹은 치킨의 수가 주어질 때, 받을 수 있는 최대 서비스 치킨의 수를 구하라는 문제이다. (내가 생각한 풀이 과정) 총 서비스를 받은 치킨의 수를 저장할 정수 변수 answer를 만들어둔다. 이제 10마리를 기준으로 입력값 chicken을 계속 반복시킬 거다. 어떻게 반복할 거냐면. 1) 입력값 chicken을 10으로 나누어서 서비스로 받은 치킨의 값을 answer에 추가한다. 2) chicken에는 10으로 나누고 남은 나머지 값과 + 서비스로 받은 치킨의 값을 저장해 둔다 (서비..
2023.06.06 -
1. 특이한 정렬 (문제 설명, 제한사항, 입출력 예) 배열 numlist와 정수 n이 주어질 때, numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 구하라는 문제이다. 만약 n으로부터 거리가 같다면, 더 큰 수를 앞에 오도록 배치하면 된다. 단, numlist 배열은 중복된 원소를 갖지 않는다. n의 범위는 1 이상, 10,000 이하로 제한한다. (내가 생각한 풀이 과정) 이 문제는 내가 처음 생각했던 것과 다르게 몇 번의 "도약"이 필요했던 문제였다. 처음 생각한 풀이 과정과 나의 도약을 함께 따라가면서 이해해 보자. 우선, 처음 생각한 풀이 과정은 간단했다. n과 가까운 수를 구하기 위해 num에서 n을 빼 절댓값을 씌워준 후, 새로운 리스트 1에 추가하고, 값이 작은 순서대로 새로..
[Programmers/Lv. 0] 코딩테스트 입문 Day 23 - 배열, 정렬, 문자열 (Python)1. 특이한 정렬 (문제 설명, 제한사항, 입출력 예) 배열 numlist와 정수 n이 주어질 때, numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 구하라는 문제이다. 만약 n으로부터 거리가 같다면, 더 큰 수를 앞에 오도록 배치하면 된다. 단, numlist 배열은 중복된 원소를 갖지 않는다. n의 범위는 1 이상, 10,000 이하로 제한한다. (내가 생각한 풀이 과정) 이 문제는 내가 처음 생각했던 것과 다르게 몇 번의 "도약"이 필요했던 문제였다. 처음 생각한 풀이 과정과 나의 도약을 함께 따라가면서 이해해 보자. 우선, 처음 생각한 풀이 과정은 간단했다. n과 가까운 수를 구하기 위해 num에서 n을 빼 절댓값을 씌워준 후, 새로운 리스트 1에 추가하고, 값이 작은 순서대로 새로..
2023.06.06 -
1. 저주의 숫자 3 (문제 설명, 제한사항, 입출력 예) 3의 배수와 숫자 3을 사용하지 않는 3x 마을 사람들이 있다. 주어진 정수 n을 3x 마을에서 사용하는 숫자로 바꿔서 구하라는 문제이다. (단, 정수 n의 범위는 1 이상, 100 이하) (내가 생각한 풀이 과정) 고려해줘야 하는 조건은 두 가지이다. 3의 배수일 경우 (answer % 3 == 0)와 숫자 3이 들어가 있는 경우 (str(answer).count('3')) 3x 마을은 위 조건의 경우 해당 숫자를 건너뛰기 때문에 +1을 해주면 된다. 주어진 수 n이 0이 될 때까지 1씩 빼보면서 해당 조건을 확인하면서 얼마큼을 건너뛰어야 하는지를 파악할 수 있다. (코드) 더보기 💡 내 코드 def solution(n): answer = 0 ..
[Programmers/Lv. 0] 코딩테스트 입문 Day 22 - dp, 수학, 조건문, 배열 (Python)1. 저주의 숫자 3 (문제 설명, 제한사항, 입출력 예) 3의 배수와 숫자 3을 사용하지 않는 3x 마을 사람들이 있다. 주어진 정수 n을 3x 마을에서 사용하는 숫자로 바꿔서 구하라는 문제이다. (단, 정수 n의 범위는 1 이상, 100 이하) (내가 생각한 풀이 과정) 고려해줘야 하는 조건은 두 가지이다. 3의 배수일 경우 (answer % 3 == 0)와 숫자 3이 들어가 있는 경우 (str(answer).count('3')) 3x 마을은 위 조건의 경우 해당 숫자를 건너뛰기 때문에 +1을 해주면 된다. 주어진 수 n이 0이 될 때까지 1씩 빼보면서 해당 조건을 확인하면서 얼마큼을 건너뛰어야 하는지를 파악할 수 있다. (코드) 더보기 💡 내 코드 def solution(n): answer = 0 ..
2023.06.05 -
1. 숨어있는 숫자의 덧셈 (2) (문제 설명, 제한사항, 입출력 예) 소문자, 대문자, 자연수로만 구성되어 있는 문자열 my_string이 주어질 때, my_string 안에 있는 자연수들의 합을 구하라는 문제이다. 단, 연속된 수는 하나의 숫자로 간주한다. my_string 문자열에 자연수가 없는 경우에는 0을 반환한다. (내가 생각한 풀이 과정) 어려운 코드는 아니지만, 설명이 조금 어려워 사용한 코드도 함께 설명을 하겠다. 우선, 문자열(my_string)을 하나씩 반복하면서 요소(i)가 숫자인지 아닌지를 판별(isdigit() 함수 사용)해준다. 이때, 가장 고려해야 할 점이 "연속된 수는 하나의 숫자로 간주한다"는 점이었다. 즉, 단순히 숫자라고 더하기를 더해주면 안 되고, 이후의 수, 그 이..
[Programmers/Lv. 0] 코딩테스트 입문 Day 21 - 문자열, 사칙연산, 시뮬레이션, 2차원배열, 수학, 배열 (Python)1. 숨어있는 숫자의 덧셈 (2) (문제 설명, 제한사항, 입출력 예) 소문자, 대문자, 자연수로만 구성되어 있는 문자열 my_string이 주어질 때, my_string 안에 있는 자연수들의 합을 구하라는 문제이다. 단, 연속된 수는 하나의 숫자로 간주한다. my_string 문자열에 자연수가 없는 경우에는 0을 반환한다. (내가 생각한 풀이 과정) 어려운 코드는 아니지만, 설명이 조금 어려워 사용한 코드도 함께 설명을 하겠다. 우선, 문자열(my_string)을 하나씩 반복하면서 요소(i)가 숫자인지 아닌지를 판별(isdigit() 함수 사용)해준다. 이때, 가장 고려해야 할 점이 "연속된 수는 하나의 숫자로 간주한다"는 점이었다. 즉, 단순히 숫자라고 더하기를 더해주면 안 되고, 이후의 수, 그 이..
2023.06.04 -
1. 직사각형 넓이 구하기 (문제 설명, 제한사항, 입출력 예) 직사각형 네 꼭짓점의 좌표가 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 형태로 담겨 있는 배열이 주어질 때, 주어진 직사각형의 넓이를 구하라는 문제이다. 주어진 직사각형은 2차원 좌표 평면에 변이 축과 평행하게 주어진다. (내가 생각한 풀이 과정) 직사각형의 넓이를 구하는 방법이 "가로 x 세로"인 것은 초등학교 때 배우니까 너무 당연한 것이고, 나는 이 가로와 세로의 길이를 x값의 최대-최소, y값의 최대-최소 식을 이용해서 구하기로 했다. (코드) 더보기 💡 내 코드 def solution(dots): return (max(dots)[0] - min(dots)[0])*(max(dots)[1] - min(do..
[Programmers/Lv. 0] 코딩테스트 입문 Day 20 - 수학, 시뮬레이션, 문자열, 사칙연산 (Python)1. 직사각형 넓이 구하기 (문제 설명, 제한사항, 입출력 예) 직사각형 네 꼭짓점의 좌표가 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 형태로 담겨 있는 배열이 주어질 때, 주어진 직사각형의 넓이를 구하라는 문제이다. 주어진 직사각형은 2차원 좌표 평면에 변이 축과 평행하게 주어진다. (내가 생각한 풀이 과정) 직사각형의 넓이를 구하는 방법이 "가로 x 세로"인 것은 초등학교 때 배우니까 너무 당연한 것이고, 나는 이 가로와 세로의 길이를 x값의 최대-최소, y값의 최대-최소 식을 이용해서 구하기로 했다. (코드) 더보기 💡 내 코드 def solution(dots): return (max(dots)[0] - min(dots)[0])*(max(dots)[1] - min(do..
2023.06.03 -
1. 7의 개수 (문제 설명, 제한사항, 입출력 예) 정수 배열이 주어질 때, 배열 안에 7이 총 몇 개 있는지 구하라는 문제이다. (내가 생각한 풀이 과정) 파이썬 문자열에는 count()라는 찾고 싶은 문자의 개수를 구할 수 있는 내장 함수가 존재한다. 배열 속에 들어있는 요소들을 하나의 문자열로 변환한 후, count 함수를 이용해서 7의 개수를 구하면 된다. (코드) 더보기 💡 내 코드 def solution(array): return str(array).count('7') 2. 잘라서 배열로 저장하기 (문제 설명, 제한사항, 입출력 예) 주어진 문자열을 주어진 정수만큼 잘라서 저장한 배열을 반환하라는 문제이다. (내가 생각한 풀이 과정) 문자열(my_str) 속에 있는 한 문자(i)씩 반복을 하..
[Programmers/Lv. 0] 코딩테스트 입문 Day 19 - 문자열, 배열, 조건문 (Python)1. 7의 개수 (문제 설명, 제한사항, 입출력 예) 정수 배열이 주어질 때, 배열 안에 7이 총 몇 개 있는지 구하라는 문제이다. (내가 생각한 풀이 과정) 파이썬 문자열에는 count()라는 찾고 싶은 문자의 개수를 구할 수 있는 내장 함수가 존재한다. 배열 속에 들어있는 요소들을 하나의 문자열로 변환한 후, count 함수를 이용해서 7의 개수를 구하면 된다. (코드) 더보기 💡 내 코드 def solution(array): return str(array).count('7') 2. 잘라서 배열로 저장하기 (문제 설명, 제한사항, 입출력 예) 주어진 문자열을 주어진 정수만큼 잘라서 저장한 배열을 반환하라는 문제이다. (내가 생각한 풀이 과정) 문자열(my_str) 속에 있는 한 문자(i)씩 반복을 하..
2023.06.03 -
1. 문자열안에 문자열 (문제 설명, 제한사항, 입출력 예) 문자열 str1과 str2가 주어질 때, str1 안에 str2가 들어 있다면 1을, str2가 없다면 2를 반환하라는 문제이다. (내가 생각한 풀이 과정) 앞에서도 많이 풀어봤지만, 문자열은 파이썬의 in 연산을 사용할 수 있다는 것을 이용했다. (코드) 더보기 💡 내 코드 def solution(str1, str2): return 1 if str2 in str1 else 2 2. 제곱수 판별하기 (문제 설명, 제한사항, 입출력 예) 주어진 정수가 제곱수라면 1을, 제곱수가 아니라면 2를 반환하라는 문제이다. (내가 생각한 풀이 과정) 제곱근을 구하는 sqrt() 함수를 사용했다. 주어진 수의 제곱근이 정수라면, 주어진 수가 제곱수라고 판단할..
[Programmers/Lv. 0] 코딩테스트 입문 Day 18 - 문자열, 수학, 조건문, 정렬 (Python)1. 문자열안에 문자열 (문제 설명, 제한사항, 입출력 예) 문자열 str1과 str2가 주어질 때, str1 안에 str2가 들어 있다면 1을, str2가 없다면 2를 반환하라는 문제이다. (내가 생각한 풀이 과정) 앞에서도 많이 풀어봤지만, 문자열은 파이썬의 in 연산을 사용할 수 있다는 것을 이용했다. (코드) 더보기 💡 내 코드 def solution(str1, str2): return 1 if str2 in str1 else 2 2. 제곱수 판별하기 (문제 설명, 제한사항, 입출력 예) 주어진 정수가 제곱수라면 1을, 제곱수가 아니라면 2를 반환하라는 문제이다. (내가 생각한 풀이 과정) 제곱근을 구하는 sqrt() 함수를 사용했다. 주어진 수의 제곱근이 정수라면, 주어진 수가 제곱수라고 판단할..
2023.06.02 -
1. 숫자 찾기 (문제 설명, 제한사항, 입출력 예) 정수 num과 k가 주어질 때, 정수 num 중에서 k가 있다면 정수 num에서의 k가 있는 자릿수를 반환하라는 문제이다. 만약에, 정수 k가 num 안에 없다면 -1을 반환하도록 한다. num에 k가 여러 개 있다면, 가장 처음 나타나는 자리를 반환하면 된다. (내가 생각한 풀이 과정) 인덱스가 아니라 자릿수를 반환하라는 문제이므로, 결국은 인덱스를 찾아, 마지막에는 +1을 해줘야 한다는 것이 먼저 떠올랐다. find() 함수를 사용해서 인덱스를 찾아주었다. 단, find() 함수를 사용하기 위해 주어진 정수들은 문자열로 변환해서 사용했다. (코드) 더보기 💡 내 코드 def solution(num, k): answer = str(num).find(..
[Programmers/Lv. 0] 코딩테스트 입문 Day 17 - 문자열, 수학, 조건문, 배열, 사칙연산 (Python)1. 숫자 찾기 (문제 설명, 제한사항, 입출력 예) 정수 num과 k가 주어질 때, 정수 num 중에서 k가 있다면 정수 num에서의 k가 있는 자릿수를 반환하라는 문제이다. 만약에, 정수 k가 num 안에 없다면 -1을 반환하도록 한다. num에 k가 여러 개 있다면, 가장 처음 나타나는 자리를 반환하면 된다. (내가 생각한 풀이 과정) 인덱스가 아니라 자릿수를 반환하라는 문제이므로, 결국은 인덱스를 찾아, 마지막에는 +1을 해줘야 한다는 것이 먼저 떠올랐다. find() 함수를 사용해서 인덱스를 찾아주었다. 단, find() 함수를 사용하기 위해 주어진 정수들은 문자열로 변환해서 사용했다. (코드) 더보기 💡 내 코드 def solution(num, k): answer = str(num).find(..
2023.05.31 -
1. 편지 (문제 설명, 제한사항, 입출력 예) 글자 한 자가 가로 2cm 크기로 되게 편지를 쓸 때, 축하 문구 nessage 문자열을 적기 위해 필요한 편지지의 최소 가로길이를 구하라는 문제이다. (내가 생각한 풀이 과정) 문자열 길이의 곱하기 2배 해주면 된다. (코드) 더보기 💡 내 코드 def solution(message): return len(message)*2 2. 가장 큰 수 찾기 (문제 설명, 제한사항, 입출력 예) 정수 배열이 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 구하라는 문제이다. (내가 생각한 풀이 과정) 최댓값을 구하는 max() 함수와 인덱스를 구하는 index() 함수를 이용하면 된다. (오늘 문제들 왜이렇게 쉬운 거야) (코드) 더보기 💡 내 코드 def..
[Programmers/Lv. 0] 코딩테스트 입문 Day 16 - 문자열, 수학, 배열, 조건문 (Python)1. 편지 (문제 설명, 제한사항, 입출력 예) 글자 한 자가 가로 2cm 크기로 되게 편지를 쓸 때, 축하 문구 nessage 문자열을 적기 위해 필요한 편지지의 최소 가로길이를 구하라는 문제이다. (내가 생각한 풀이 과정) 문자열 길이의 곱하기 2배 해주면 된다. (코드) 더보기 💡 내 코드 def solution(message): return len(message)*2 2. 가장 큰 수 찾기 (문제 설명, 제한사항, 입출력 예) 정수 배열이 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 구하라는 문제이다. (내가 생각한 풀이 과정) 최댓값을 구하는 max() 함수와 인덱스를 구하는 index() 함수를 이용하면 된다. (오늘 문제들 왜이렇게 쉬운 거야) (코드) 더보기 💡 내 코드 def..
2023.05.30 -
1. 영어가 싫어요 (문제 설명, 제한사항, 입출력 예) 영어로 표시되어 있는 숫자를 수로 바꾸라는 문제이다. (예시: "onefourzerosixseven" -> 14067) (내가 생각한 풀이 과정) 일차원 적으로 생각해서, 알파벳을 써놓은 문자열 리스트와 숫자를 써놓은 리스트를 각각 인덱스에 대응되게 만들어둔다. 그리고 알파벳 리스트를 하나씩 반복시키면서, 해당하는 문자열이 있는 경우에 replace() 함수를 이용해서 인덱스에 맞게 대응 후 바꿔주는 방법을 생각했다. (코드) 더보기 💡 내 코드 def solution(numbers): alpha = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] nu..
[Programmers/Lv. 0] 코딩테스트 입문 Day 15 - 문자열, 해시, 배열, 수학 (Python)1. 영어가 싫어요 (문제 설명, 제한사항, 입출력 예) 영어로 표시되어 있는 숫자를 수로 바꾸라는 문제이다. (예시: "onefourzerosixseven" -> 14067) (내가 생각한 풀이 과정) 일차원 적으로 생각해서, 알파벳을 써놓은 문자열 리스트와 숫자를 써놓은 리스트를 각각 인덱스에 대응되게 만들어둔다. 그리고 알파벳 리스트를 하나씩 반복시키면서, 해당하는 문자열이 있는 경우에 replace() 함수를 이용해서 인덱스에 맞게 대응 후 바꿔주는 방법을 생각했다. (코드) 더보기 💡 내 코드 def solution(numbers): alpha = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] nu..
2023.05.30