https://programmers.co.kr/learn/courses/30/lessons/12940 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr 프로그래머스 레벨1에 있는 최대공약수와 최고공배수 구하는 문제를 풀었다. 처음 문제를 보고 2개의 for문을 사용해서 최소 공배수와 최대 공약수를 n,m별로 구해야하나 생각을 했는데 그렇게 되면 시간 복잡도가 굉장히 비효율적일 것 같아서 다른 방법을 찾아봤다. 찾아보니까 최대공약수는 유클리드 호제법이라는 알고리즘으로 구할 수 있었..
https://programmers.co.kr/learn/courses/30/lessons/12934 코딩테스트 연습 - 정수 제곱근 판별 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함 programmers.co.kr 프로그래머스에서 레벨1 연습문제를 왕창 풀다가 기억해두면 좋을 것 같은 문제라서 따로 포스팅을 하게 되었다. 정수 제곱급 판별 문제로 math 모듈을 쓰면 엄청 편하다! 정답 코드 import math def solution(n): if math.sqrt(n).is_integer() : return (math.sqrt(n)+1)**..
https://programmers.co.kr/learn/courses/30/lessons/12930 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr 프로그래머스에서 뭔가 예전에 비슷한 문제를 푼 것만 같았던 '이상한 문자 만들기'를 풀었다. 왜이렇게 푼 것만 같지.. 왜지.. 첫번째 시도 - 테스트 케이스에서 왕창 틀림 def solution(s): answer = [] strings = s.split("") for i in range(len(strings)) : strings[i] = list..
https://programmers.co.kr/learn/courses/30/lessons/12926 코딩테스트 연습 - 시저 암호 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀 programmers.co.kr 프로그래머스 레벨1 시저암호 문제를 풀었다. 처음엔 하드코딩으로 A~Z, a~z 리스트를 만들어서 for문으로 문자를 바꾸려고 했는데 생각보다 잘 안됐다. 더 좋은 방법이 있을 것 같아서 구글링을 했고 아스키 코드로 바꾸는 방법을 알게 되었다. 참고한 사이트 : https://wooaoe.tistory.com/72 정답 코드 def ..
https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 프로그래머스에서 level 1 연습문제인 '로또의 최고 순위와 최저 순위' 문제를 풀었다. for문을 사용하지 않고 번호가 일치하는지 아닌지 비교하는 방법을 떠올리기가 힘들었던 문제였다. 찾아보니 set에서 & 연산으로 공통인 요소를 뽑아낼 수 있었고 이를 사용해 맞춘 번호의 개수를 알아냈다. 정답 코드 def so..
https://programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스에서 토요일에 있었던 코테 준비를 위해 풀었던 소수 만들기 문제이다. 소수 만들고 판별하는 문제에 꽂혀서 왕창 푼 듯 ㅋㅋ 얼마전에 itertools permutations을 사용해서 주어진 수들의 조합을 구했던 기억이 있어서 그걸로 풀었으나 왜인지 모르겠지만 시간 초과로 효율성 테스트에서 통과하지 못했다. 다른 방법이 있나 찾아보니까 combination을 사용해서도 조합을 할 수 있었다. 정답 코드 from itertools import combinations as cb def solution(nums): cnt = 0 for a in cb(nums, 3) : Sum = sum(a) for..
https://programmers.co.kr/learn/courses/30/lessons/42842?language=python3 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 프로그래머스 완전 탐색 레벨2 문제 중 카펫을 풀었다. 문제에서 노란색 격자가 무조건 직사각형이어야 한다는 걸 명시해 줬으면 조금은 쉽게 풀지 않았을까 했다... 이 문제는 https://blog.naver.com/yh1313_/222079784715 해당 링크를 참고해서 풀었다. 해당 링크를 보고 이렇게 쉽게 풀수 있다는 걸 ..
https://programmers.co.kr/learn/courses/30/lessons/42839?language=python3 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 프로그래머스에서 레벨1 연습문제인 소수찾기를 해 봤으니 완전 탐색을 이용한 레벨 2 소수찾기도 풀어보았다. 이 문제는 소수만 찾는게 아니라 주어진 문자열로 숫자 조합을 할 수 있어야했다. 숫자 조합을 할 수 있는 방법을 도무지 알 수가 없어서 구글링해서 itertools에서 permutations을 사용할 수 있다는 ..
https://programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 프로그래머스에서 level 1 연습문제 소수찾기 문제를 풀었다. 레벨1이라고 만만하게 봤다가 진짜진짜 겨우 풀었다 ㅋㅋ.. 소수찾기는 '에라토스테네스의 체' 라는 방법으로 구현을 할 수 있다고 한다. 나 이관데.. 왜 에라토스테네스의 체가 낯선지 모르겠다... 🤦♀️에라토스테네스의 체를 이해해도 이를 코드로 구현하는 건 정말 어려웠고 ..
https://programmers.co.kr/learn/courses/30/lessons/12915 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱 programmers.co.kr 프로그래머스에서 문자열 정렬을 하는 문제를 풀었다. n번째 글자를 기준으로 문자열을 정렬하는 문제로 n번째 글자가 같을 땐 사전 순서 대로 정렬을 해야하는 문제이다. 특정 문자열로 정렬을 어떻게 해야할지 몰라서 검색을 해 봤고 문자열 정렬 중 함수를 인자로 받는 key를 사용하여 원하는 대로 정..