파이썬
-
모의고사 문제 설명 간단한 완전탐색 문제 문제 풀이 소스코드 : C++ #include #include #include using namespace std; vector solution(vector answers) { vector answer; vector player = {{1,2,3,4,5},{2,1,2,3,2,4,2,5},{3,3,1,1,2,2,4,4,5,5}}; vector cnt = {0,0,0}; for(int i=0; i
[Programmers - lv01] 모의고사 (cpp / python)모의고사 문제 설명 간단한 완전탐색 문제 문제 풀이 소스코드 : C++ #include #include #include using namespace std; vector solution(vector answers) { vector answer; vector player = {{1,2,3,4,5},{2,1,2,3,2,4,2,5},{3,3,1,1,2,2,4,4,5,5}}; vector cnt = {0,0,0}; for(int i=0; i
2020.06.09 -
프로그래머스 html 구조가 생각보다 복잡하다.. ㅠㅜ 우선 문제들을 긁어오기위한 get_problems.py를 선언하여 pagination의 마지막 숫자 즉 마지막 페이지 번호를 가져오자. get_problems.py import requests from bs4 import BeautifulSoup url = "https://programmers.co.kr/learn/challenges?tab=all_challenges" def get_max_page(): req = requests.get(url) # url에 요청하기 soup = BeautifulSoup(req.text,"html.parser") # 요청한 url의 html 긁어오기 pages = soup.find_all("li",{"class":"..
[파이썬으로 웹 스크래퍼 만들기] 6. (복습) 프로그래머스 코딩테스트 연습 문제 긁어오기프로그래머스 html 구조가 생각보다 복잡하다.. ㅠㅜ 우선 문제들을 긁어오기위한 get_problems.py를 선언하여 pagination의 마지막 숫자 즉 마지막 페이지 번호를 가져오자. get_problems.py import requests from bs4 import BeautifulSoup url = "https://programmers.co.kr/learn/challenges?tab=all_challenges" def get_max_page(): req = requests.get(url) # url에 요청하기 soup = BeautifulSoup(req.text,"html.parser") # 요청한 url의 html 긁어오기 pages = soup.find_all("li",{"class":"..
2020.06.03 -
기둥과 보 설치 문제 설명 구현 문제이다. 머릿속으로 구현은 나름 빠르게 됐는데 코드로 옮기면서 조건을 한 두개씩 빼먹어서 시간이 오래걸렸다. 시험이 아닌데도 3시간씩 걸려서 푸는데.. 언제 이런문제를 1시간 안에 풀 수 있을까... 기둥과 보가 설치될 수 있는 조건을 명확하게 해결하여야한다. 설치할 때는 해당 위치에 기둥과 보가 설치될 수 있는지 확인하고, 삭제할 때는 삭제를 시킨 후 모든 구역에 대해 기둥과 보가 설치 할 수 있는지 없는지 확인한다. 문제 풀이 소스코드 : C++ 해당 좌표에 기둥과 보가 설치 되어있는지 확인하는 구조체 POS Map[101][101]을 선언한다. 우선 해당 좌표에 기둥과 보를 설치할 수 있는지 확인하는 두 함수 chk_pillar와 chk_beam을 구현한다. chk..
[2020 kakao blind recruitment] lv3 기둥과 보 설치(cpp/python)기둥과 보 설치 문제 설명 구현 문제이다. 머릿속으로 구현은 나름 빠르게 됐는데 코드로 옮기면서 조건을 한 두개씩 빼먹어서 시간이 오래걸렸다. 시험이 아닌데도 3시간씩 걸려서 푸는데.. 언제 이런문제를 1시간 안에 풀 수 있을까... 기둥과 보가 설치될 수 있는 조건을 명확하게 해결하여야한다. 설치할 때는 해당 위치에 기둥과 보가 설치될 수 있는지 확인하고, 삭제할 때는 삭제를 시킨 후 모든 구역에 대해 기둥과 보가 설치 할 수 있는지 없는지 확인한다. 문제 풀이 소스코드 : C++ 해당 좌표에 기둥과 보가 설치 되어있는지 확인하는 구조체 POS Map[101][101]을 선언한다. 우선 해당 좌표에 기둥과 보를 설치할 수 있는지 확인하는 두 함수 chk_pillar와 chk_beam을 구현한다. chk..
2020.05.30 -
124 나라의 숫자 코딩테스트 연습 - 124 나라의 숫자 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. programmers.co.kr 문제 설명 10진법을 3진법으로 바꾸는 방식으로 풀면된다. 3진법에는 0,1,2가 쓰인다면 이 문제는 1,2,4가 쓰이도록 문제를 해결한다. 문제 풀이 소스코드 : C++ 재귀를 이용한 풀이 #include #include #include using namespace std; char num[3] = {'1','2','4'}; string solution(int n) { if(!n--)return ""; ..
[Programmers - lv02] 124 나라의 숫자 (cpp / python)124 나라의 숫자 코딩테스트 연습 - 124 나라의 숫자 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. programmers.co.kr 문제 설명 10진법을 3진법으로 바꾸는 방식으로 풀면된다. 3진법에는 0,1,2가 쓰인다면 이 문제는 1,2,4가 쓰이도록 문제를 해결한다. 문제 풀이 소스코드 : C++ 재귀를 이용한 풀이 #include #include #include using namespace std; char num[3] = {'1','2','4'}; string solution(int n) { if(!n--)return ""; ..
2020.05.29 -
스킬트리 코딩테스트 연습 - 스킬트리 programmers.co.kr 문제 설명 정해진 스킬 순서를 올바르게 배웠는지 체크하는 문제. 스킬을 의미하는 알파벳 사용 여부와 skill의 순서로 skill_trees들을 체크한다. 문제 풀이 소스코드 : C++ skill에 있는 스킬들을 true표시 해둔다. skill_trees에 담긴 스킬들을 탐색한다. 해당 스킬이 skill에 포함 된 문자라라면 순서가 맞는지 체크한다. 순서를 의미하는 index, skill[index] == s[j]이면 다음 스킬을 체크한다. 그렇지 않으면 순서가 맞지 않으므로 break 위과정을 반복하여 스킬의 모든 길이를 탐색했으면 예외가 없으므로 answer++해준다. 위 과정을 반복한다. #include #include #incl..
[Summer/Winter coding -2018] 스킬트리스킬트리 코딩테스트 연습 - 스킬트리 programmers.co.kr 문제 설명 정해진 스킬 순서를 올바르게 배웠는지 체크하는 문제. 스킬을 의미하는 알파벳 사용 여부와 skill의 순서로 skill_trees들을 체크한다. 문제 풀이 소스코드 : C++ skill에 있는 스킬들을 true표시 해둔다. skill_trees에 담긴 스킬들을 탐색한다. 해당 스킬이 skill에 포함 된 문자라라면 순서가 맞는지 체크한다. 순서를 의미하는 index, skill[index] == s[j]이면 다음 스킬을 체크한다. 그렇지 않으면 순서가 맞지 않으므로 break 위과정을 반복하여 스킬의 모든 길이를 탐색했으면 예외가 없으므로 answer++해준다. 위 과정을 반복한다. #include #include #incl..
2020.05.28 -
다리를 지나는 트럭 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 문제 설명 다리를 queue라고 생각하고 조건을 적절히 이용하여 푸는 문제다. 어렵지는 않지만 생각해야할 조건이 많아서 좀 까다로웠다. 자세한 풀이는 c++코드에 주석처리 해놓았다. 파이썬 코드도 로직자체는 같지만 for문에서 인덱스값을 마음대로 조절할 수 없어서 while문을 이용하였다. 문제 풀이 소스코드 : C++ #include #include #include #include #define PII pair using..
[Programmers - lv02] 다리를 지나는 트럭 (cpp / python)다리를 지나는 트럭 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 문제 설명 다리를 queue라고 생각하고 조건을 적절히 이용하여 푸는 문제다. 어렵지는 않지만 생각해야할 조건이 많아서 좀 까다로웠다. 자세한 풀이는 c++코드에 주석처리 해놓았다. 파이썬 코드도 로직자체는 같지만 for문에서 인덱스값을 마음대로 조절할 수 없어서 while문을 이용하였다. 문제 풀이 소스코드 : C++ #include #include #include #include #define PII pair using..
2020.05.26 -
쇠막대기 코딩테스트 연습 - 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레� programmers.co.kr 문제 설명 (는 스택에 쌓아주고 )일때마다 top에 있는 (를 pop하고 스택의 사이즈를 answer에 더해준다. 문제 풀이 소스코드 : C++ #include #include using namespace std; int solution(string arrangement) { int answer = 0; vector v; // stack for(int i=0; i
[Programmers - lv02] 쇠막대기 (cpp / python)쇠막대기 코딩테스트 연습 - 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레� programmers.co.kr 문제 설명 (는 스택에 쌓아주고 )일때마다 top에 있는 (를 pop하고 스택의 사이즈를 answer에 더해준다. 문제 풀이 소스코드 : C++ #include #include using namespace std; int solution(string arrangement) { int answer = 0; vector v; // stack for(int i=0; i
2020.05.25 -
멀쩡한 사각형 문제 설명 처음에 문제를 접했을 때, 아무리 생각해도 로직이 떠오르지 않았다. 그래서 조금 수학적으로 생각을 바꿔보았다. 대각선을 그릴 때에도 가로의 길이와 세로의 길이와 관련이 있다. 중복되는지점이 4개라는 것을 알 수 있다. 결국 이 대각선을 지나는 사각형의 개수를 구하기 위해서는 중복되는 지점의 개수를 찾아 빼주면된다. 이 경우에 중복되는 지점은 1개이다. 빨간 부분에서 중복되는 점이 발생한다. 결국 이 중복되는 점은 두 수(2,3)의 최대공약수이며 위 모양의 반복되므로 그 개수 *4를 해주면 중복되는 지점의 개수를 구할 수 있다. 결국에는 8과 12의 최대공약수가된다. 따라서 이 문제를 식으로 해결하면 answer = w*h(전체 사각형의 개수) - (w + h - gcd(w,h)가..
[Summer/Winter coding 2019] 멀쩡한 사각형 (cpp / python)멀쩡한 사각형 문제 설명 처음에 문제를 접했을 때, 아무리 생각해도 로직이 떠오르지 않았다. 그래서 조금 수학적으로 생각을 바꿔보았다. 대각선을 그릴 때에도 가로의 길이와 세로의 길이와 관련이 있다. 중복되는지점이 4개라는 것을 알 수 있다. 결국 이 대각선을 지나는 사각형의 개수를 구하기 위해서는 중복되는 지점의 개수를 찾아 빼주면된다. 이 경우에 중복되는 지점은 1개이다. 빨간 부분에서 중복되는 점이 발생한다. 결국 이 중복되는 점은 두 수(2,3)의 최대공약수이며 위 모양의 반복되므로 그 개수 *4를 해주면 중복되는 지점의 개수를 구할 수 있다. 결국에는 8과 12의 최대공약수가된다. 따라서 이 문제를 식으로 해결하면 answer = w*h(전체 사각형의 개수) - (w + h - gcd(w,h)가..
2020.05.22