대웅짱님의 블로그
문제: https://www.acmicpc.net/problem/10972 순열이 주어졌을 때 다음 순열을 출력하는 문제이다. 순열의 길이는 최대 10000 이다. algorithm헤더의 next_permutation(순열 배열의 시작 주소, 끝 주소)를 사용하면 곧 바로 다음 순열을 알 수 있지만 그냥 다음 순열을 계산하는 방법으로 풀었다. 1. 순열을 뒤에서 부터 앞으로 확인하면서 arr[i-1] < arr[i]인 곳을 찾는다. 2. 만약 모든 숫자를 확인했을 때 위의 조건을 만족하지 않으면 마지막 순열이라는 뜻이므로 -1를 출력하고 종료한다. 3. 1의 조건을 만족하는 지점(j)이 있다면 그 j를 기준으로 순열 두 덩이로 나눈다. 4. [j-n]덩어리에서 뒤에서부터 확인하면서 arr[j-1]보다 큰..
문제: https://www.acmicpc.net/problem/1707 정점과 간선들이 주어졌을 때 이 그래프를 이분 그래프로 나눌 수 있냐 없냐 물어보는 문제이다. 이분 그래프는 그래프를 정점 기준으로 두 집합으로 나누었을 때 그 집합 안에서 정점들 간의 간선이 존재하지 않는 그래프를 뜻한다. 그럼 어떻게 이 문제를 해결할까? 간단하게 DFS를 돌면서 내가 현재 보고있는 정점과 그 정점의 인접한 정점들을 구분지어주면 된다. 난 0과 1를 사용해서 구분지었는데 편하게 색깔이라고 생각하면 될 것 같다. 만약 현재 정점이 0번 색이라면 방문하지 않았던 인접한 정점들은 1번 색으로 칠해준다. 만약 인접한 정점이 이미 방문했던 정점이라면 색을 확인해보고 만약 나랑 같은 색을 가지고 있다면 이 그래프는 이분 그..
문제: https://www.acmicpc.net/problem/1107 보고 싶은 TV 채널 N이 주어졌을 때 최소 몇 번의 리모컨 버튼 누름으로 그 채널에 갈 수 있는지를 물어보는 문제이다. 리모컨은 M개의 버튼이 고장나 있는데 고장나는 버튼은 숫자 버튼이고 위 아래 버튼은 고장나지 않는다. 처음에는 이 문제를 그리디로 접근해서 1. 100 - N번 채널의 절대 값2. N - 고장나지 않은 버튼으로 갈 수 있는 N번 채널의 가장 가까운 아래 채널의 절대 값 + 길이3. N - 고장나지 않은 버튼으로 갈 수 있는 N번 채널의 가장 가까운 위에 채널의 절대 값 + 길이 위 세개 중 최소 값을 구해서 풀려고 했었는데 이 가장 가까운 값을 고르는게 생각보다 싶지 않아 그냥 완전탐색을 이용하여 풀었다. 시간제..
가장 먼저 안드로이드 기기가 BLE 스캔을 하기 위해선 퍼미션이 있어야한다. 프로젝트를 만들면 자동으로 생성되는 AndroidManifest.xml파일이있다. 이 파일에 123 위의 두 줄(블루투스 퍼미션)을 추가해주자. (
두 달 동안 인턴으로 일한 회사에서 BLE(Bluetooth Low Energy)센서 관련 앱을 만들었다. 앱 만드는 것도 거의 처음이라 아무것도 모르는 상태에서 하려니까 힘들었다. BLE가 뭔지도 몰라서 처음엔 Bluetooth통신으로 코딩하다가 아무리 Scan해도 센서가 안 나오길래 이상해서 구글링해보고 다 지우고 다시 만들었었다. 나 같은 사람에게 도움이 되고자 쓴다. BLE란 간단하게 말해 저전력 블루투스이다. 기존 블루투스 연결방식은 베터리 소모가 크다. 그래서 이를 해결하고자 나온 게 BLE라고 생각하면 된다. 요즘 나오는 위치기반 기기, 웨어러블기기 등과 같은 기기가 BLE를 사용한다. 그럼 안드로이드 기기에서 어떻게 BLE 통신을 할까? 기본적으로 BLE기기들은 전원을 켜면 반경으로 어떠한..