본문 바로가기

전체 글

(47)
[백준] 1406번 에디터 문자를 계속해서 수정하므로 배열보다는 연결 리스트로 구현하는 것이 낫다고 생각했다. 리스트를 선언한 후 커서 위치를 설정했다. 위에서 커서 위치에 따른 iterator는 커서의 오른쪽에 위치한다. 예를 들어, abcd를 입력한 후 L을 입력하면 커서는 왼쪽으로 간다. 이때 iterator는 d를 가리키고 있다. 따라서 명령을 수행할 때 커서의 오른쪽에 있는 iterator를 기준으로 코드를 작성하면 된다. 명령어 'L'의 경우 커서가 문장의 맨 앞에 위치할 경우 continue를 했다. 커서가 문장의 맨 앞에 있으면 iterator는 editor.begin() 보다 한 칸 뒤에 있으므로 조건문을 위와 같이 설정했다. 나머지 명령어도 위와 같은 개념으로 구현하면 된다. 전체 코드 #include using..
[Kotlin] 백그라운드에서 FCM 알림 받기 저번 글에 이어서 데이터베이스의 데이터에 변경이 생길 경우 앱에 알림이 가도록 구현하고자 한다. toy9910.tistory.com/31 [Kotlin] 안드로이드와 실시간 데이터베이스 데이터 읽고 쓰기 toy9910.tistory.com/29 [Kotlin] 안드로이드와 파이어베이스 실시간 데이터베이스 연동 우선 안드로이드와 파이어베이스가 연동이 되어있다는 가정 하에 진행한다. 만약 아직 연동이 안되어 있다면 toy9 toy9910.tistory.com 일단 푸시 알림으로는 2가지 유형이 있다. Notification은 앱이 포그라운드일 때만 푸시 알림이 오고 Data는 포그라운드와 백그라운드 둘 다 푸시 알림이 온다. 필자는 백그라운드에서 알림을 받는 것을 구현할 예정이므로 Data를 사용해 앱에 알..
[Kotlin] 안드로이드와 실시간 데이터베이스 데이터 읽고 쓰기 toy9910.tistory.com/29 [Kotlin] 안드로이드와 파이어베이스 실시간 데이터베이스 연동 우선 안드로이드와 파이어베이스가 연동이 되어있다는 가정 하에 진행한다. 만약 아직 연동이 안되어 있다면 toy9910.tistory.com/28 [Kotlin] 안드로이드와 파이어베이스 연동 우선 파이어베이스의 콘 toy9910.tistory.com 위 게시물에서 연동한 실시간 데이터베이스의 데이터를 안드로이드에서 실시간으로 확인하고자 한다. 우선 'AndroidManifest.xml'에 INTERNET 퍼미션을 추가한다. 데이터베이스에 올릴 데이터의 클래스를 생성한다. 데이터를 담을 레이아웃 파일을 만들어 준다. 데이터들이 저장된 리스트를 담을 어댑터를 만든다. initDatabase 함수를 통해..
[Kotlin] 안드로이드와 파이어베이스 실시간 데이터베이스 연동 우선 안드로이드와 파이어베이스가 연동이 되어있다는 가정 하에 진행한다. 만약 아직 연동이 안되어 있다면 toy9910.tistory.com/28 [Kotlin] 안드로이드와 파이어베이스 연동 우선 파이어베이스의 콘솔부터 만들어야 한다. firebase.google.com/ Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.co toy9910.tistory.com 위 게시물을 통해 연동을 하고 오길 바란다. 상단에 'Tools' 메뉴에서 'Firebase'를 선택한다. 'Realtime Database' 왼쪽에 삼각형을 클릭하고 'Get Started with Realtime Database'..
[Kotlin] 안드로이드와 파이어베이스 연동 우선 파이어베이스의 콘솔부터 만들어야 한다. firebase.google.com/ Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.com 위 링크에 접속하여 '시작하기'를 누르고 구글 계정으로 로그인을 한다. '프로젝트 추가'를 누른다. 프로젝트 이름을 작성한 후 '계속'을 눌러 진행한다. 다시 '계속'을 누른다. Google 애널리틱스 계정이 없으면 새로 생성하고, 있으면 Google 애널리틱스 계정 선택에서 'Default Account for Firebase'를 선택한 후 '프로젝트 만들기'를 누른다. 잠시 기다리면 프로젝트가 생성되고 '계속'을 눌러 진행을 완료한다. 사진과 같이 프..
[백준] 14503번 로봇 청소기 문제 설명 함수의 인자로는 행의 좌표, 열의 좌표, 현재 방향을 넣어주고 해당 좌표의 값이 0일 경우 값을 2로 바꾸어 청소했다고 표시하고 count 값을 1 증가시켰다. 문제에서 주어진 대로 현재 방향의 왼쪽 칸이 청소되어 있는지 확인을 하고 청소가 되어있지 않으면 현재 방향에 따라 방향을 바꾼 후 한 칸 옮겼다. 만약 왼쪽 칸이 청소되어 있을 경우 현재 칸의 상,하,좌,우의 칸들이 청소되어 있는지 확인한다. 상,하,좌,우의 칸들이 모두 청소되어 있을 경우 현재 방향으로부터 뒷 칸이 벽인지 확인한 후 벽일 경우 함수를 종료하고 벽이 아닐 경우 현재 방향을 유지한 채 한 칸 후진한다. 상,하,좌,우의 칸들 중 한 칸이라도 청소되어 있지 않은 칸이 존재할 경우 현재 칸에서 방향만 왼쪽으로 바꿔준다. 각 칸..
백준 12891번 톱니바퀴 문제 설명 signal 배열은 wheel1~4까지 각각의 바퀴마다 어느 방향으로 회전해야하는지에 대한 데이터가 담긴 배열이다. 0이면 그대로, 1이면 시계 방향, -1이면 반시계 방향이다. 처음에 func 함수에서 회전시키는 방법에 맞게 signal의 값들을 설정한다. 위에서 signal에 입력한 데이터를 사용하여 spin 함수를 실행한다. dir(방향)이 0일 경우 그대로 함수를 종료하고 1일 경우 마지막 톱니의 극을 빼서 맨 앞에 넣어주고 -1일 경우 맨 앞의 톱니의 극을 빼서 맨 뒤에 넣어준다. 전체 코드 wheel1 =[] wheel2 =[] wheel3 = [] wheel4 = [] signal = [] def spin(num,dir): global wheel1 global wheel2 glob..
백준 3190번 뱀 문제 설명 orders는 L개의 뱀의 방향 변환 정보를 담는 배열, snake는 뱀의 머리부터 꼬리까지의 좌표들, dir은 현재 뱀의 방향을 나타낸다. 함수의 인자로는 방향 변환 정보를 하나씩 받아온다. answer는 게임 시작으로부터 경과 시간을 나타낸다. 첫번째 경우로 뱀의 방향이 오른쪽(R)일 때 order[0]은 게임이 시작 시간으로부터의 경과 시간이므로 반복문을 order[0] - answer 만큼 돌린다. answer를 1 더한 후 뱀의 머리 부분을 이동시켜 해당 좌표로 이동할 수 있는지 확인한다. 총 2가지 경우의 수를 확인해야 하는데 1. 뱀의 머리가 보드를 넘어가는지 2. 뱀의 머리가 자신의 몸통에 닿는지 만약 오른쪽으로 한 칸 이동했을 때 보드를 넘어가면 finished를 True로 바..