본문 바로가기

전체 글89

[BOJ] 두 스티커 Link : https://www.acmicpc.net/problem/16937Level : S3유형 : 부르트포스📌 문제 탐색하기H,W (1N (1R, C (1 스티커 N개 중에서 스티커 2개를 선택해 붙여있을 때 붙여진 스티커 넓이의 최댓값을 구하기 위해서 먼저 N개 중에서 스티커 2개를 뽑아야 한다. 이때 스티커의 최대 수는 100이므로이중 반복문을 이용해서 선택한다고 했을 때, 시간 복잡도는 O(n^2)은 약 10,000 정도이다. 또한 스티커는 회전하여 붙일 수 있으므로 2개의 스티커가 회전하는 경우의 수는 2*2 = 4가지이다. 완전 탐색으로 탐색해도 시간복잡도가 커지지 않으므로 전체 N개에서 스티커 2개를 뽑을 수 있는 경우를 모두 탐색하여 진행한다. 📌  코드 설계하기1. 문제의 입력값.. 2024. 8. 5.
백준 2178번 - 미로 탐색 #include using namespace std; int n, m, y, x, ny, nx, visited[103][103]; char adj[103][103]; int dy[4] = {-1, 0, 1, 0}; int dx[4] = {0, 1, 0, -1}; //최단경로 문제-> bfs 이용 int main(){ cin >> n >> m; for(int i=1; i adj[i][j]; } } queue q; visited[1][1] = 1; q.push({1,1}); while(q.size()){ tie(y, x) = q.front(); q.pop(); for(int i=0; i 2023. 11. 8.
RecyclerView 일정하게 여백 설정 문제 RecyclerView Grid 형태로 2줄 만들 때 한쪽으로 치우침 - 좌,우, 상, 하 일정한 여백을 주어 아이템들을 중앙에 배치하고 싶다. 해결 1. layout_xml에 RecyclerView 추가 2. GridSpaceItemDecoration 클래스 만들기 GridSpaceItemDecoration.kt class GridSpaceItemDecoration(val spanCount: Int, val space: Int): RecyclerView.ItemDecoration() { override fun getItemOffsets( outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State ) { val positio.. 2023. 10. 6.
깊이 우선 탐색 (DFS, Depth First Search) - 그래프를 탐색할 때 쓰는 알고리즘 중 하나 - 어떤 노트부터 시작해 인접한 노드들을 재귀적으로 방문하며 방문한 정점은 다시 방문하지 않는다. - 각 분기마다 가능한 가장 멀리 있는 노드까지 탐색한다. cf) 분기 : 2개 이상의 정점으로 쪼개지는 부분 cf) BFS는 level 별로 탐색한다. DFS 수도코드 DFS(u, adj) u.visited = 1 for v ∈ adj[u] if(v.visited ==0) DFS(v, adj) DFS 코드 구현 #include using namespace std; const int n=6; vector adj[n]; int visited[n]; void dfs(int u){ visited[u]=1; cout 2023. 10. 2.
맵과 방향백터 Q. 문제에서 맵(Map)으로 그래프를 표현한 경우 - 맵(지도) 기반으로 문제를 풀어야 한다! (인접행렬 X, 인접리스트X) 1. 맵을 보고 "갈 수 있는 지점" 과 "갈 수 없는 지점"을 인식한다. - 갈 수 있는 지점 : 연결된 정점 - 갈 수 없는 지점 : 연결되지 않은 정점 1 1 1 1 1 1 1 0 0 2. 4가지 방향 탐색 (y, x 기반으로 하기) 시계방향으로 탐색 (상 → 우 → 하 → 좌) 3. 재귀적으로 한칸씩 이동 (인접리스트, 행렬과 마찬가지로) Q. 3 * 3 맵을 입력받는다. 이 맵은 1과 0으로 이루어져있고 {0, 0}은 무조건 1이다. {0, 0}부터 4방향을 기준으로 한칸씩 탐색해나가며 방문한 정점은 다시 방문하지 않으며 방문하는 좌표를 출력한다. (0은 갈 수 없는 지.. 2023. 10. 1.
인접행렬과 인접리스트 탐색 그래프를 표현하는 방법 2가지 (컴퓨터에게 정점-간선으로 연결된 그래프가 있다고 알려주는 것) - 인접행렬 : 2차원 배열을 기반으로 그래프 표현 - 인접리스트 : 연결리스트를 기반으로 그래프 표현 더보기 1. 0번부터 방문 안한 노드를 찾고 해당 노드부터 방문한다. 2. 연결된 노드를 이어서 방문한다. 3. 방문한 노드는 다시 방문하지 않는다. 인접행렬을 기반으로 탐색하기 - 2차원 배열 이용 //인접행렬 #include using namespace std; const int V=10; bool a[V][V], visited[V]; //0으로 초기화 void go(int from){ visited[from] =1; cout 2023. 10. 1.
[queue]백준 10845번 - 큐 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net #include #include #include using namespace std; int n; queue q; int main(){ cin >> n; for(int i=0; i> s; if(s=="push"){ int num; cin >> num; q.push(num); }else if(s=="pop"){ if(q.size()==0) cout 2023. 10. 1.
[stack]백준 9012번 - 괄호 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net #include #include using namespace std; int n; int main(){ cin >> n; for(int i=0; i> s; for(int i=0; i 2023. 10. 1.
[stack]백준 10828번 - 스택 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net #include #include #include using namespace std; int n; stack st; int main(){ cin >> n; for(int i=0; i> s; if(s== "push"){ int num; cin >> num; st.push(num); }else if(s=="pop"){ if(st.size()==0){ cout 2023. 10. 1.
[android] 접근성(accessibility) android:contentDescription="@string/app_name" android:contentDescription 속성은 안드로이드 뷰(예: ImageView, Button 등)에 대한 접근성(accessibility) 설명을 제공하는 데 사용된다. 이 속성은 주로 시각적으로 인식하기 어려운 요소(이미지, 아이콘 등)에 대한 설명을 제공하여 시각 장애인 및 기타 장애를 가진 사용자가 앱을 더 잘 이해하고 상호 작용할 수 있도록 돕는 데 사용된다. android:contentDescription는 문자열 리소스를 참조하거나 직접 문자열을 제공하여 뷰에 설명을 추가할 수 있다. 일반적으로 다음과 같은 경우에 사용됩니다. 이미지 및 아이콘: 이미지나 아이콘을 사용하는 경우, 이미지가 나타내는 .. 2023. 9. 11.
[android] NestedScrollView에서 ViewPager2가 슬라이드 이동을 하지 않는 문제 ViewPager2가 슬라이드 이동을 하지 않는 문제는 NestedScrollView가 터치 이벤트를 가로채서 발생하는 문제일 수 있다. ViewPager2에 터치 이벤트가 전달되어야 한다. 이 문제를 해결하기 위해서는 ViewPager2가 터치 이벤트를 받을 수 있도록 NestedScrollView를 터치 이벤트를 투과시키는 방법을 사용해야 한다. 이를 위해 NestedScrollView에 다음과 같은 속성을 추가할 수 있다. android:fillViewport="true" android:descendantFocusability="blocksDescendants" android:fillViewport="true": NestedScrollView가 자식 뷰를 포함하는 데 필요한 공간을 차지하도록 한다... 2023. 9. 10.
백준 3986번 - 좋은 단어 https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net #include using namespace std; int n, cnt; string word; bool goodWord = true; int main(){ cin >> n; for(int i=0; i> word; stack st; for(char c : word){ if(!st.empty() && st.top() == c){ st.pop(); }else{ st.push(c); } } if(st.empty.. 2023. 8. 25.