본문 바로가기
프로그래머스 '혼자서 하는 틱택토' 파이썬 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/160585 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(b): o, x = sum([arr.count('O') for arr in b]), sum([arr.count('X') for arr in b]) if 0 2023. 4. 26.
프로그래머스 '공원 산책' 파이썬 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다. ["방향 거리", "방향 거리" … ] 예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다음 두 가지.. 2023. 4. 26.
프로그래머스 '코드 처리하기' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ''' 문자열 code가 주어집니다. code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다. mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다. mode가 0일 때 code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 code[idx]를 추가합니다. code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다. .. 2023. 4. 24.
파이썬 == 과 is 의 차이점, 주소값 자바스크립트에서 == 과 ===의 차이를 공부하다가 파이썬에 is 와 ==가 있는걸 알았는데 자세하게 공부해보았다. 먼저 쉽게 보면 is는 같은 주소에 있는지, ==은 모양새가 같은지 확인하는 것이다. 위의 사진으로 예를 들면 ==은 디스이즈네버댓 반팔이면 True를 반환하고, 같은 티셔츠가 아니라면 False를 반환한다. 하지만 is는 이 티셔츠의 파는곳이 같은지도 검사한다. 무신사의 디스이즈네버댓티셔츠와 쿠팡의 디스이즈네버댓티셔츠는 다른것이다. 이를 코드로 바꿔서 설명을 조금더 하면 다음과 같다. coupang_t_shirt = 'this is never that' musinsa_t_shirt = 'this is never that' print(coupang_t_shirt is musinsa_t_sh.. 2023. 4. 24.
프로그래머스 '추억 점수' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리.. 2023. 4. 5.
파이썬으로 이미지 확장자 변경하기 파이썬 각종 OCR 사용해보기 및 네이버 클라우드 AI OCR 사용법 (2) 파이썬 각종 OCR 사용해보기 및 네이버 클라우드 AI OCR 사용법 (1) 유해이미지를 판별해야하는데 처음에는 야한이미지나 잔인한이미지를 판별하는 모델을 만들었었다. 만들고나서 어플 내에서 이 beomcoder.tistory.com 프로젝트를 진행하다가 OCR API를 사용할일이 생겼는데, 현재 어플데이터베이스에서 이미지가 gif, bmp, webp, jpg, blob, 확장자가 없는 이미지 등 다양하게 존재하여 이미지 확장자를 변경시켜주어야 했다. def check_extension(url:str) -> str: return extension if ((extension:=url.split('.')[-1]) != 'com') .. 2023. 4. 5.
파이썬 각종 OCR 사용해보기 및 네이버 클라우드 AI OCR 사용법 (2) 파이썬 각종 OCR 사용해보기 및 네이버 클라우드 AI OCR 사용법 (1) 유해이미지를 판별해야하는데 처음에는 야한이미지나 잔인한이미지를 판별하는 모델을 만들었었다. 만들고나서 어플 내에서 이전의 광고로 판단되어 삭제되었던 이미지를 가지고 와서 테스트 beomcoder.tistory.com (1)에 이어서 마저 쓰려고 한다. 먼저 콘솔에 가서 OCR Domain생성하기를 클릭하여 정보를 입력해준다. 도메인 이름, 도메인 코드는 아무거나 적어도 상관없다. 나는 그냥 이미지에서 글자를 추출하기 위해서 General로 선택하였다. 그리고 SecretKey를 생성하여 복사하고, APIGW 자동 연동을 선택하여 URL을 받는다. 여기서 의아했던게 OCR서비스를 제공하는데 API는 따로 신청해줘야 한다는 점이었다.. 2023. 4. 5.
파이썬 각종 OCR 사용해보기 및 네이버 클라우드 AI OCR 사용법 (1) 유해이미지를 판별해야하는데 처음에는 야한이미지나 잔인한이미지를 판별하는 모델을 만들었었다. 만들고나서 어플 내에서 이전의 광고로 판단되어 삭제되었던 이미지를 가지고 와서 테스트를 해보았다. 하지만 실제로 어플에서는 그런 경우는 많이 없고 글자로 광고하는 경우가 많았다. 그래서 우선 글자로 광고하는 게시물을 잡는 로직을 거치려고 한다. 내가 생각한 방법은 먼저 OCR을 통해서 글자를 추출하고 글자가 있다면 형태소 분석을 통해 키워드를 추출하여 로직을 통해 광고성 글이 들어갔는지 판별하는 알고리즘이다. 내가 생각한 알고리즘인데 우선 유해이미지에 대해 정의하였고 무료 OCR를 먼저 사용해보았다. 1. tesseract tesseract는 검색했을때 가장 먼저 나온 파이썬 OCR 라이브러리였다. pip inst.. 2023. 3. 30.
네이버에서 무료로 불우이웃에게 기부하기 평소에 간간히 네이버 지식인에서 활동하고 있다. 여기서는 답변을 하면 콩을 한개씩 주는데 한개당 100원이다. 그래서 조금씩 답변해서 모은 콩을 전부 기부하였더니 7만원정도 된다. 사실 내 시간을 지식인에 투자했으니 무료는 아니지만 돈이 안들어가니 무료라고 하겠다. https://happybean.naver.com/ happybean.naver.com 여기 사이트에 들어가면 여러가지 후원을 할 수 있다. 콩을 얻는 방법은 여러가지 있지만 나는 그냥 검색능력이 부족하고, 배울 수 있는 곳이 부족한 사람들에게 간단한 답변을 해주는 기쁨과 기부하는 기쁨을 둘다 얻을 수 있어 지식인답변을 많이 하는 편이다. 네이버에서 무료로 기부를 하니까 왠지 모르게 마음도 뿌듯해진다. 답변을 하다보니 어느새 내공도 쌓이고 꽤.. 2023. 3. 22.
프로그래머스 '카드 뭉치' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 1. 원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다. 2. 한 번 사용한 카드는 다시 사용할 수 없습니다. 3. 카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다. 4. 기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다. 문자열로 이루어진 배열 cards1, cards2와 원하는 단어 배열 goal이 매.. 2023. 3. 15.
프로그래머스 '대충 만든 자판' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 휴대폰의 자판은 컴퓨터 키보드 자판과는 다르게 하나의 키에 여러 개의 문자가 할당될 수 있습니다. 키 하나에 여러 문자가 할당된 경우, 동일한 키를 연속해서 빠르게 누르면 할당된 순서대로 문자가 바뀝니다. 예를 들어, 1번 키에 "A", "B", "C" 순서대로 문자가 할당되어 있다면 1번 키를 한 번 누르면 "A", 두 번 누르면 "B", 세 번 누르면 "C"가 되는 식입니다. 1번 키부터 차례대로 할당된 문자들이 순서대로 담긴 문자열배열 keymap과 입력하려는 문자열들이 담긴 문자열 배열 targ.. 2023. 3. 15.
빙AI, chatgpt, 노션ai 비교하기 chatgpt덕분에 ai가 많이 알려지면서 여러기업에서도 ai를 개발하고 있다. 마이크로소프트, 구글, 노션등 많이 있지만 구글에서는 BARD AI를 만들었지만 문제점이 많아 아직 나오지 않았다. 그래서 마이크로소프트 빙 AI / 마이크로소프트 openAI chatgpt, 노션(notion) ai를 비교해보려고 한다. Chat GPT 먼저 ChatGPT는 GPT-3.5 언어 모델을 기반으로 한 대화형 인공지능이다. (SKT에서 API로 제공한 모델은 GPT-3 기반의 모델이다) 사용자와 주고받는 대화에서 인공지능에 따라서 질문에 답하도록 설계된 언어모델이며, 오픈AI는 블로그 게시글을 통해 “ChatGPT가 대화 형식으로 추가적인 질문에 답하고, 실수를 인정하며, 정확하지 않은 전제에 대해서는 이의를 제.. 2023. 3. 15.
머신러닝(CatBoost, LightGBM, XGBoost) 공부하기 Kaggle을 비롯한 데이터 경진대회 플랫폼에서 항상 상위권을 차지하는 알고리즘 XGBoost, LightGBM, CatBoost에 대해 정리하고 차이점을 비교해보려고 한다. 내가 부트캠프에서 인공지능을 배웠을때나 다른 교육을 들었을때 항상 처음부터 썼던 모델이니 방법론부터 배우다 보니까 최근에 쓰이는 모델, 현재 쓰고 있는 무엇인가를 배욱기도 전에 교육이 끝난다. 나는 예전 것도 배워서 차근차근 배우는 것도 중요하지만 쓸만한 것들을 배우고 싶었다. 나는 decision tree, random forest 같이 옛날에 만들어져서 지금은 쓰여지지 않는 머신러닝기법만 배우다가 교육기간이 끝났다. 중간에 부트캠프 내 대회를 개최하거나 다른 대회를 참여할때도 부트캠프에서 배운 머신러닝만 쓰다가 점수도 내지 못하.. 2023. 3. 14.
AI 표준화에 대해서 팁스 준비를 하면서 표준화 전략에 대해 써야했다. 이때까지 부트캠프나 친구들끼리 프로젝트를 진행해보면서 표준화전략을 세워본적이 없었다. 그래서 많이 생소하고 어려워서 알아봐야겠다고 생각했다. 먼저 표준화 전략에 대해 PPT를 작성하면서 표준 단체에 대해 알아보았다. 인공지능 표준 단체로는 ITU-T, ISO/IEC JTC 1, IEEE, W3C, Khronos Group, ONNX 등이 있다고 한다. 이중 ITU-T와 IEEE는 무인화, 헬스케어, 로봇 등 전 산업영역에서 인공지능을 활용한 기술을 표준화하고 있다. ISO/IEC JTC 1은 인공지능 시스템 자체에 대한 표준화를 진행하며, W3C는 웹영역에서의 머신러닝 활용, Khronos Group, ONNX는 머신러닝 모델의 교환 포맷에 대한 표준화를.. 2023. 3. 13.
프로그래머스 '덧칠하기' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다. (중략) """ def solution(n, m, section): paint, answer = section[0]-1, 0 for v in section: if paint < v: paint = v+m-1 ans.. 2023. 3. 5.
프로그래머스 '바탕화면 정리' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. (중략) """ def solution(wallpaper): answer = [50, 50, 0, 0] for yi, y in enume.. 2023. 3. 5.
프로그래머스 Summer/Winter Coding(~2018) '스킬트리' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스.. 2023. 3. 1.
프로그래머스 2018 KAKAO BLIND RECRUITMENT '[3차] 파일명 정렬' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표시되기 때문이다. (중략) 파일명은 우선 HEAD 부분을 기준으로 사전 순으로 정렬한다. 이때, 문자열 비교 시 대소문자 구분을 하지 않는다. MUZI와 muz.. 2023. 3. 1.
프로그래머스 '할인 행사' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다. (중략) 정현이가 원하는 제품을 나타내는 문자열 배열 want와 정현이가 원하는 제품의 수량을 나타내는 정수 배열 number, XYZ 마트에서 할인하는 제품을 나타내는 문자.. 2023. 3. 1.
프로그래머스 해시 '베스트앨범' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 1. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 2. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 .. 2023. 2. 28.
프로그래머스 2021 KAKAO BLIND RECRUITMENT '메뉴 리뉴얼' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 각 손님들이 주문한 단품메뉴들이 문자열 형식으로 담긴 배열 orders, "스카피"가 추가하고 싶어하는 코스요리를 구성하는 단품메뉴들의 갯수가 담긴 배열 course가 매개변수로 주어질 때, "스카피"가 새로 추가하게 될 코스요리의 메뉴 구성을 문자열 형태로 배열에 담아 return 하도록 solution 함수를 완성해 주세요. """ from itertools import combinations from collections import Counter def solution(orders, course.. 2023. 2. 27.
프로그래머스 해시 '위장' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. (중략) """ def solution(clothes): _dict = {k:[] for _,k in clothes} for v, k in clothes: _dict[k].append(v) res = 1 for v in _dict.values():.. 2023. 2. 26.
프로그래머스 '대충 만든 자판' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 휴대폰의 자판은 컴퓨터 키보드 자판과는 다르게 하나의 키에 여러 개의 문자가 할당될 수 있습니다. 키 하나에 여러 문자가 할당된 경우, 동일한 키를 연속해서 빠르게 누르면 할당된 순서대로 문자가 바뀝니다. 예를 들어, 1번 키에 "A", "B", "C" 순서대로 문자가 할당되어 있다면 1번 키를 한 번 누르면 "A", 두 번 누르면 "B", 세 번 누르면 "C"가 되는 식입니다. (중략) """ def solution(keymap, targets): answer = [] kv = {} for keys .. 2023. 2. 24.
프로그래머스 2019 카카오 개발자 겨울 인턴십 '튜플' 파이썬 풀이 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ (전략) 특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성해주세요. """ def solution(s): answer = [] for _list in sorted(eval(s.replace('{','[').replace('}',']')), key=lambda x: len(x)): for v in _list: if v not in answer: answer.append(v) break return ans.. 2023. 2. 24.