본문 바로가기

Archive/ProblemSolving

(105)
[BOJ] C++ 11651 "좌표 정렬하기 2" 문제 풀이 _ nov #INFO 난이도 : SILVER5 문제 유형 : 정렬 출처 : 11651번: 좌표 정렬하기 2 (acmicpc.net) #SOLVE BOJ 11650 좌표 정렬하기 문제랑 거의 같은 문제이다. sort 함수 내부에서 pair는 first(x좌표)를 기준으로 오름차 정렬 되기 때문에 3번째 인자로 second(y좌표)를 기준으로 오름차 정렬하고, second(y좌표)가 같을 경우 first(x좌표)를 기준으로 오름차 정렬하는 bool형 compare 함수를 정의해 주면 된다. #CODE #include using namespace std; bool compare(const pair& p1, const pair& p2){ if(p1.second == p2.second) // y좌표가 같으면 return p..
[BOJ] C++ 11650 "좌표 정렬하기" 문제 풀이 _ nov #INFO 난이도 : SILVER5 문제 유형 : 정렬 출처 : 11650번: 좌표 정렬하기 (acmicpc.net) #SOLVE 시간복잡도를 생각하지 않고 무작정 구현했더니, 시간초과가 발생했다. 아래는 모든 원소를 차례로 비교하는 방식의 알고리즘인데, 이는 n의 값이 100,000이 되었을 때 거의 100초에 달하는 시간이 걸리게된다. #include using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; vector xy; xy.resize(n); for(int i = 0; i > xy[i].first >> xy[i].second;..
[프로그래머스] LEVEL1 : 신규 아이디 추천 C++ #INFO 문제 : 신규 아이디 추천 난이도 : LEVEL1 출처 : 2021 KAKAO BLIND RECRUITMENT 코딩테스트 연습 - 신규 아이디 추천 | 프로그래머스 (programmers.co.kr) #SOLVE 해당 언어의 문자열 관련 함수에 대해 잘 알고 있으면 쉽게 풀이할 수 있는 문제였다. 문제에서 제시한 조건대로 차근차근 따라가면 어렵지 않게 풀어나갈 수 있지만,,,, 2단계와 3단계 처리에서 조금 애를 먹었다. // 2 단계 : new_id에서 "알파벳 소문자", "숫자", "빼기(-)", "밑줄(_)", "마침표(.)" // 를 제외한 모든 문자를 제거 _ islower, isdigit for(int i = 0; i < new_id.length(); ) { if (islower(n..
[프로그래머스] LEVEL1 : 신고 결과 받기 C++ #INFO 문제 : 신고 결과 받기 난이도 : LEVEL1 출처 : 2022 KAKAO BLIND RECRUITMENT 코드 참고 : https://yjyoon-dev.github.io/kakao/2022/01/15/kakao-2022-blind-01/ 코딩테스트 연습 - 신고 결과 받기 | 프로그래머스 (programmers.co.kr) #SOLVE "Tokenizng(문자열 파싱)"과 "map 자료구조"에 대해 공부할 수 있는 좋은 문제였다. 문제 조건에서 주어진 solution 함수의 각 parameter를 분석해 보자면 다음과 같다. _about Tokenizing id_list : user의 id가 담긴 문자열 벡터이다. report : 각 user가 신고한 다른 user의 ID 정보가 담긴 문..
[프로그래머스] LEVEL1 : 같은 숫자는 싫어 C++ _ 미완 #INFO 문제 이름 : 같은 숫자는 싫어 난이도 : LEVEL1 문제 출처 : 코딩테스트 연습 - 같은 숫자는 싫어 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr #SOLVE _1 for loop 풀이 단순 for 반복문을 이용한 풀이이다. i번째 원소와 i-1번째 원소가 다를 경우 answer 벡터에 i번째 원소를 푸시하는 방식이다. 단, arr의 첫 번째 원소는 미리 answer 벡터에 푸시해 두어야 한다. #include ..
[프로그래머스] LEVEL1 로또의 최고 순위와 최저 순위 C++ #INFO 문제 이름 : 로또의 최고 순위와 최저 순위 난이도 : LEVEL1 문제 출처 : 2021 Dev-Matching 웹 백엔드 개발 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr #SOLVE "0"의 개수와 두 벡터(lottos, win_nums)의 일치하는 원소의 개수에 따라 최고 순위(max_rank)와 최저 순위(min_rank)가 정해진다. 아래..
[프로그래머스] 코딩테스트 LEVEL1 키패드 누르기 C++ #INFO 문제이름 : 키패드 누르기 난이도 : LEVEL1 문제 출처 : 2020 카카오 인턴십 코딩테스트 연습 - 키패드 누르기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr #SOLVE 문제가 주어진 조건대로 따라가기만 하면 쉽게 풀리는 문제였다. 우선 왼손 엄지손가락의 위치를 저장할 leftHand 변수와 오른손 엄지손가락의 위치를 저장할 ..
[프로그래머스] 코딩테스트 LEVEL1 정수 제곱근 판별 C++ #INFO 문제이름 : 정수 제곱근 판별 난이도 : LEVEL1 문제 출처 : 코딩테스트 연습 - 정수 제곱근 판별 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 정수 제곱근 판별 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함 programmers.co.kr #SOLVE 1. sqrt 제곱근 함수를 이용한 풀이 cmath 라이브러리의 sqrt 제곱근 함수를 이용한 풀이이다. #include #include #include using namespace std; long long solution(long long n) { b..