본문 바로가기

전체 글79

python mongoDB 접속 에러 해결 - [SSL: CERTIFICATE_VERIFY_FAILED] python으로 mongoDB를 다루는 연습을 하고 있는데, from pymongo import MongoClient client = MongoClient("mongodb+srv://test:@cluster0.9dl7gbc.mongodb.net/?retryWrites=true&w=majority") 위와 같이 작성하면 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 오류가 발생하며 mongoDB에 접근이 되지 않는다. 원인은 네트워크 환경에 따라 추가 보안이 필요하다는 것이었고, python 패키지 certifi를 통해 해결할 수 있다. 1. python package - certifi 설치 2. tlsCAFile=certifi.where() 추가.. 2022. 10. 17.
프로그래머스 - 소수 찾기 (Python) 문제 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. n은 2이상 1000000이하의 자연수입니다. 풀이 def solution(n): answer = 0 # 1. 1은 소수가 아니므로 2부터 n까지의 수를 확인한다. for x in range(2, n+1): # 2. x가 2부터 x의 제곱근 사이의 자연수로 나누어 떨어지면, 소수가 아니다. for j in range(2, int(x ** 0.5) + 1): if x % j == 0: isPrime = False break # 3. x가 2부터 x의 제곱근 사이의 자연수로 나누어 떨어지지 않는다면, 소수이다. if isPrime == True: answer += 1 return answer 이 문제는.. 2022. 6. 23.
프로그래머스 - 약수의 개수와 덧셈 (Python) 문제 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 코드 def solution(left, right): answer = 0 num = [i for i in range(left, right+1)] for n in num: if n**0.5 == int(n**0.5): answer -= n else: answer += n return answer 풀이 약수는, 어떤 수를 나누어 떨어지게 하는 수를 말한다. 예를 들어 12의 약수는 1, 2, 3, 4, 6, 12가 되고, 각각 쌍을 이루어 1*12 / 2*6 / 3*4 = .. 2022. 6. 14.
프로그래머스 - 메뉴 리뉴얼 (Python) 문제 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다. 예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면, (각 손님은 단품메뉴를 2개 이상 주문해야 하며,.. 2022. 6. 11.
프로그래머스 - 행렬 테두리 회전하기 (Python) 문제 rows x columns 크기인 행렬이 있습니다. 행렬에는 1부터 rows x columns까지의 숫자가 한 줄씩 순서대로 적혀있습니다. 이 행렬에서 직사각형 모양의 범위를 여러 번 선택해, 테두리 부분에 있는 숫자들을 시계방향으로 회전시키려 합니다. 각 회전은 (x1, y1, x2, y2)인 정수 4개로 표현하며, 그 의미는 다음과 같습니다. x1 행 y1 열부터 x2 행 y2 열까지의 영역에 해당하는 직사각형에서 테두리에 있는 숫자들을 한 칸씩 시계방향으로 회전합니다. 행렬의 세로 길이(행 개수) rows, 가로 길이(열 개수) columns, 그리고 회전들의 목록 queries가 주어질 때, 각 회전들을 배열에 적용한 뒤, 그 회전에 의해 위치가 바뀐 숫자들 중 가장 작은 숫자들을 순서대로 .. 2022. 6. 11.
프로그래머스 - 타겟 넘버 (Python) 문제 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이.. 2022. 6. 9.
프로그래머스 - 오픈채팅방 (Python) 코드 def solution(record): answer = [] id_name = dict() for rec in record: command = rec.split()[0] if command == "Leave": continue id = rec.split()[1] name = rec.split()[2] if command in ["Enter", "Change"]: id_name[id] = name for rec in record: command = rec.split()[0] id = rec.split()[1] if command == "Enter": name = rec.split()[2] answer.append(f"{id_name[id]}님이 들어왔습니다.") elif command == "Leav.. 2022. 6. 8.
프로그래머스 - 체육복 (Python) 문제 programmers.co.kr/learn/courses/30/lessons/42862# 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때,.. 2022. 6. 8.