본문 바로가기

심심풀이 알고리즘8

[백준] IF문 좀 대신 써줘 19637번 - (C++ 20, C++ 23) 간만에 백준 문제를 풀어봤습니다!보통 난이도를 가리고 편견없이 풀곤하는데,가볍게 읽어도 문제가 어려워 보이지 않아c++를 조금 더 공부 해보았습니당. https://www.acmicpc.net/problem/19637 C++20/23의 단순한 활용 경험과,출력 성능 비교를 포함한 결과를 공유합니다~~! 문제 분석문제는 다음과 같은 과정으로 해결했습니다입력 처리: 전투력 구분 (name, power)와 사용자 전투력(userPower)을 입력받습니다.이분 탐색: std::lower_bound를 활용하여 각 사용자 전투력에 맞는 전투력 구분을 빠르게 탐색합니다.출력: 각 사용자 전투력에 해당하는 전투력 이름을 출력합니다.핵심 풀이 : 이분 탐색 입력의 밑줄 내용을 보면 알 수 있는 점이 있습니다. 1) 입력.. 2025. 1. 2.
[백준] 로봇 청소기 14503번 - (Java) 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 기본적으로 DFS를 통해 해결했다. 회전 방향과 종료 시점을 잘 짚어주는 것이 중요했다. 회전방향 구하기 1) 회전 방향 : 이동은 반시계 방향으로 90도 돌며 진행한다. // 상, 우, 하, 좌 static int[] dirX = {0, 1, 0, -1}; static int[] dirY = {-1, 0, 1, 0}; 이동할 방향을 제시된 번호에 맞게 상(0), 우(1), 하(2), 좌(3)으로 변화량을 설정했다.. 2023. 8. 25.
[백준] 16197번 두 동전 - (JAVA) 문제 16197번: 두 동전 N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, www.acmicpc.net ※주의※ 실패기록일 뿐 풀이에 대한 설명은 미포함되어 있습니다. 고생 나의 풀이는 1시간을 넘겨 실패로 간주하고 정답 코드들을 분석하였다. 일부러 C++로 짠 코드를 골라서 JAVA로 변화시켜 짜면서 내 이해도를 파악했다... 자바로 재구성한 코드 문제 의도는 BFS라고 한다. 아무래도 최소 거리라서 그건듯하다... import java.io.BufferedReader; import java.io.IOException; import java.io.Input.. 2023. 8. 20.
[백준] 15686번 치킨 배달 - (JAVA) https://www.acmicpc.net/problem/15686 15686번: 치킨 배달크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸www.acmicpc.net 간만에 검색 안 하고 풀었다ㅠㅠ기쁘다ㅠㅠㅠㅠㅠ이 다음 순열, 조합, 부분집합 다 정리해야겠다!! 집가서 정리해야지!> 풀이 핵심 키워드!>>  조합   Why?N개의 치킨집이 주어졌을 때, R개의 치킨집을 살려놓는다.선택된 R개의 치킨집 집합과 집들의 치킨거리가 최소인 경우의 치킨거리를 구한다!  조합은 어떻게 짜지?=> Next Permutation을 이용한다!  단순 풀이과정.. 2023. 8. 11.
[프로그래머스] 2020 카카오 인턴십 경주로 건설 2020 카카오 인턴십 [카카오 인턴] 경주로 건설 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 탐색 기법 : DFS 목적지 도달까지 경로비용을 계산하며 모든 경로를 탐색한다. 도착지부터, 목적지까지 오른쪽, 아래, 왼쪽, 위 순서로 DFS DFS 전달내용 - 현재 보드 탐색 상황 - 현재 x, y 좌표 - 이전 이동 방향 - 누적 비용 #define R 0 #define D 1 #define L 2 #define U 3 // 현재 맵, 현재 x좌표, 현재 y좌표, 이전 진행 방향, 누적 비용 int dfs(vector board, int x, int .. 2023. 3. 30.
[백준] 15685번 드래곤 커브 (C++) 요즘에는 공부가 지루하면 알고리즘 문제를 풀곤한다. 오늘 푼 문제는 드래곤~! 커~~브~~~! https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 나는 어떻게 풀었을까? 비효율적인 알고리즘 내가 처음 생각했던 건 아래와 같다. 0세대를 먼저 배열에 표기하고, 0세대를 복제하여, 90도 회전한 배열이 있다. 원본과 복제본의 각 끝점의 좌표를 기억해둔다. 원본의 끝점과 복제본의 끝점 좌표를 뺴주어 변화량을 알아낸다. 복제본의.. 2023. 1. 20.
[프로그래머스] 2020 카카오 인턴십 보석 쇼핑 C++ : 풀이 / 테스트케이스 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간만에 머리 조금씩 굴려가며 푼 문제이다.ㅠㅠ 초기 알고리즘 (효율성 0% 오답) 1. 전체 보석의 종류 수 구하기 vector type; // 보석이 있는지 확인을 위한 벡터 vector answer; // 정답 채울 벡터 int len = gems.size(); int cnt = 0; // 보석의 전체 종류 수 저장 for (int i = 0; i < len; i++) { // 만약에 벡터에 포함되지 않은 요소라면 if (type.end() == find(type.begin(), type.end(), ge.. 2022. 7. 21.
[프로그래머스] 키패드 누르기 프로그래머스의 2020카카오인턴십 키패드 누르기를 풀어보았다. 코딩테스트 연습 - 키패드 누르기 [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 원래는 시간 맞추고 다 풀고 싶었는데 3시간 동안 2개 풀었다ㅠㅠ 풀이법 1. 번호마다 각 위치를 저장한다. 2. 왼손과 오른손만을 쓰는 경우를 체크한다. 3. 중앙의 숫자를 누르는 경우를 체크한다. - 왼손/오른손 중 누가 더 가까운가? - 둘의 거리가 같다면 왼손/오른손 잡이 중 무엇인가.. 2022. 4. 18.