문제https://www.acmicpc.net/problem/1003다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다.int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); }}fibonacci(3)을 호출하면 다음과 같은 일이 일어난다.fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다.fibonacci(2)는 fibonacci(1) (두 번째 호출..
구현 목표기존에는 화면 중앙에 로딩 스피너를 배치했는데,데이터를 불러온 뒤에 시선이 다시 화면 상단으로 이동해야 하는 점이 다소 불편하다고 느꼈다. 그래서 시선 이동을 최소화하고 사용자 경험을 높이기 위해홈 화면 로딩 시 로딩 스피너 대신 스켈레톤 UI를 적용하기로 했다. shimmer 패키지플러터에서 손쉽게 shimmer 효과를 적용할 수 있도록 도와주는 패키지다.스켈레톤 UI를 만들 때 자주 활용되며, `baseColor`, `highlightColor`, `child`만 지정하면 간단하게 적용할 수 있다. 그 외에는 다음과 같은 옵션들을 제공한다. shimmer | Flutter packageA package provides an easy way to add shimmer effect in Flut..
문제https://school.programmers.co.kr/learn/courses/30/lessons/17679블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록".같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임이다.만약 판이 위와 같이 주어질 경우, 라이언이 2×2로 배치된 7개 블록과 콘이 2×2로 배치된 4개 블록이 지워진다. 같은 블록은 여러 2×2에 포함될 수 있으며, 지워지는 조건에 만족하는 2×2 모양이 여러 개 있다면 한꺼번에 지워진다.블록이 지워진 후에 위에 있는 블록이 아래로 떨어져 빈 공간을 채우게 된다.만약 빈 공간을 채운 후에 다시 2×2 형태로 같은 모양의..
문제https://school.programmers.co.kr/learn/courses/30/lessons/49994게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다.U: 위쪽으로 한 칸 가기D: 아래쪽으로 한 칸 가기R: 오른쪽으로 한 칸 가기L: 왼쪽으로 한 칸 가기캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5, 5), 왼쪽 아래(-5, -5), 오른쪽 위(5, 5), 오른쪽 아래(5, -5)로 이루어져 있습니다.예를 들어, "ULURRDLLU"로 명령했다면1번 명령어부터 7번 명령어까지 다음과 같이 움직입니다.8번 명령어부터 9번 명령어까지 다음과 같이 움직입니다.이때, 우리는 게임 캐릭터가 지나간 길 중 캐릭터가 처음 걸어본 길의..
깃허브에서 이슈나 PR을 만들 때, 매번 동일한 형식을 직접 작성하는 것은 너무 번거롭다.이때 템플릿 파일을 만들어 두면, 새로운 이슈나 PR을 생성할 때 자동으로 템플릿이 불러와진다.이번 글에서는 이슈 템플릿과 PR 템플릿을 적용하는 방법을 예시 코드와 함께 정리한다. 이슈 템플릿 적용하기프로젝트 루트 경로에 `./.github/ISSUE_TEMPLATE/bug-report-template.md` 파일을 생성한다. ---name: "\U0001F41EBug"about: 버그 리포트 템플릿title: ''labels: ''assignees: ''---## 🐞버그 설명## 🐛에러 로그## ✅작업할 내용## 📸스크린샷## 📑참고 문서 `bug-report-template.md` 파일에 원하는 템플릿 ..
문제https://school.programmers.co.kr/learn/courses/30/lessons/131128두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다.예를 들어, X = 3403이고 Y = 13203이라면, X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 X = 5525이고 Y = 1255이면 X와 Y의 짝꿍은 X와 Y에서 공..
구현 목표푸시 알림 전송 시 기본적으로 앱 아이콘이 사용되는데,이것을 알림 전용 아이콘으로 수정해서 더 깔끔하고 직관적으로 보이도록 하고 싶었다. 알림 아이콘 이미지 추가하기알림 아이콘은 다음과 같이 흰색 단색 + 투명 배경 이미지만 허용된다. `android/app/src/main/res/drawable/ic_stat_ic_notification.png` 경로에생성한 아이콘 파일을 추가했다. (파일 이름은 원하는 대로 작성하면 된다.) 간단하게 `drawble` 디렉터리에만 PNG 파일을 추가해도 되지만,더 선명한 아이콘 이미지나, 색상을 변경하는 등 디테일한 설정을 원한다면`drawable-mdpi`, `drawable-hdpi`, `drawable-xhdpi` 등 기기 해상도별로 이미지 파일을 따로..
문제https://school.programmers.co.kr/learn/courses/30/lessons/42884고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다.고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대의 카메라를 설치해야 하는지를 return 하도록 solution 함수를 완성하세요. 제한사항차량의 대수는 1대 이상 10,000대 이하입니다.routes에는 차량의 이동 경로가 포함되어 있으며 routes[i][0]에는 i번째 차량이 고속도로에 진입한 지점, routes[i][1]에는 i번째 차량이 고속도로에서 나간 지점이 적혀 있습니다.차량의..
문제https://school.programmers.co.kr/learn/courses/30/lessons/42888카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다."[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다."[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다.채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다.채팅방에서 닉네임을 변경한다. 닉네임..
문제https://school.programmers.co.kr/learn/courses/30/lessons/17686세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다.저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표시되기 때문이다.버전 번호 외에도 숫자가 포함된 파일 목록은 여러 면에서 관리하기 불편했다. 예컨대 파일 목록이 ["img12.png", "img10.png", "img2.png", "img1.png"]일 경우, 일반적인 정렬은 ["img1.png"..