본문 바로가기

전체 글

(15)
[React Native] pod install 이슈 해결 ([!] No podspec found for `Permission...) React Native로 네이버 지도 API를 연동하던 중, 예상치 못한 오류를 만났다..!문제 상황: pod install 실행 중 발생한 오류네이버 지도 API를 연동하기 위해 위치 권한을 요청하는 기능을 구현하던 중, 위치 관련 권한 설정을 위해 react-native-permissions 라이브러리를 사용했다. 여러 블로그들을 참고하여 Podfile은 아래와 같이 설정하고 pod install을 실행했는데require_relative '../node_modules/react-native/scripts/react_native_pods'target '프로젝트이름' do ... pod 'Permission-LocationWhenInUse', :path => "#{permissions_path}/Lo..
[프로그래머스 고득점 Kit / 완전탐색] 완전탐색완전탐색은 가능한 모든 경우를 하나씩 시도하며 답을 찾는 방법문제를 해결하기 위해 모든 경우의 수를 탐색하기 때문에 정확한 답을 보장하지만, 경우의 수가 많아지면 비효율적일 수 있음주로 반복문, 재귀(DFS), 백트래킹 등을 활용해 구현장점: 구현이 간단하고 정확한 답을 보장단점: 입력 크기가 커지면 비효율적완전탐색은 입력 크기가 작거나 최적화가 필요 없는 문제에서 유용하게 사용됨LV1. 최소직사각형 (정답률 74%)각 명함의 가로와 세로 중 큰 값과, 작은 값을 따로따로 리스트에 저장한 뒤, 각각의 최댓값을 곱하여 해결했다.내 풀이function solution(sizes) { const maxList = []; const minList = []; sizes.forEach(s=>..
[Softeer/LV3. 택배 마스터 광우/스마트 물류] LV3. 택배 마스터 광우 (정답률 82.44%)주어진 레일의 순서를 적절히 정렬하여, K번의 작업 동안 택배 바구니의 무게 합을 최소화하는 문제dfs의 정석!? 모든 레일의 경우를 생각하기내 풀이const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');// N: 레일 개수, M: 바구니 최대 무게, K: 작업 시행 횟수const [N, M, K] = input[0].split(' ').map(Number);const railList = input[1].split(' ').map(Number);let min = Infinity; // 최소 무게 합// 주어진 레일 순서에서 K번 작업 동..
[Softeer/LV3. 나무 조경/순서대로 방문하기/루돌프 월드컵] LV3. 나무 조경 (정답률 72.70%)주어진 격자 형태의 정원에서 나무의 높이가 주어졌을 때, 특정 조건에 따라 나무를 그룹으로 묶어 최대의 결과를 계산하는 문제문제는 나무를 그룹화하는 방식과 계산 조건이 복잡하여 여러 시도를 했으나 실패로 끝났음 ..ㅠ첫번째 풀이 (오답)const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split("\n")const n = parseInt(input[0])const garden = input.slice(1).map(i=>i.split(" ").map(Number))const all = garden.reduce((a, c) => { for (let i = 0..
[React Native] 채팅 앱 구현하기 - 채팅 목록, 채팅방, WebSocket 연결 이번에는 React Native로 WebSocket을 활용한 간단한 채팅 앱을 만들어봤다. 사용자 목록 화면, 채팅방 화면, 그리고 WebSocket 연결까지 구현했는데.삽질도 좀 했지만 ㅋ 하나씩 해결하면서 프로토타입을 완성해냈다!아래는 핵심 코드 위주 ~1. 사용자 목록 화면 (ChatListScreen)사용자 ID를 기반으로 서버에서 사용자 목록을 가져와 보여주고, 특정 사용자를 선택하면 채팅방으로 이동할 수 있도록 구현useEffect(() => { DeviceInfo.getUniqueId().then((uniqueId) => { setMyId(uniqueId); // 내 ID 설정 fetch(`http:///users/${uniqueId}`) // 서버 주소는 환..
[프로그래머스/LV2. 124 나라의 숫자/영어 끝말잇기/괄호 회전하기] LV2. 124 나라의 숫자(정답률 51 %)처음에는 1, 2, 4만 사용하는 체계가 3진법과 비슷해 보였기 때문에 이를 활용하려 했다.그런데 일반적인 3진법과 달리 124 나라의 숫자에서는 '0'이 존재하지 않고, '3'이 '4'로 치환되며 자리 올림이 발생하는 규칙이 있었다.그래서 단순히 3진법으로 변환한 뒤 치환하는 방식으로는 해결하지 못했다.풀이 (오답)function solution(n) { const pattern = ['1', '2', '4']; // 124 나라의 숫자 패턴 const array = [...n.toString(3)]; // n을 3진법으로 변환 let beforeZero = false; // 이전에 자리 올림(0)이 발생했는지 여부 const newAr..
[프로그래머스/LV2. 피보나치 수/점프와 순간이동/스킬트리/오픈채팅방] LV2. 피보나치 수(정답률 74 %)주어진 숫자 n에 대해 피보나치 수열의 n번째 값을 구하는 문제로, 결과값은 1234567로 나눈 나머지를 반환해야 함fibo(n)을 재귀적으로 정의하여 이전 두 수를 더한 값을 리스트에 추가하는 방식으로 구현!내 풀이function solution(n) { const list = [0, 1]; function fibo(n) { return (list[list.length - 1] + list[list.length - 2]) % 1234567; } for (let i = 2; i 피보나치 수열을 저장할 배열 list를 선언하고 초기값으로 [0,1]을 설정fibo(n) 함수는 list의 마지막 두 값을 더한 뒤, 1234567로 나눈 ..
[Softeer/LV2. 금고털이/바이러스] LV2. 금고털이(정답률 40 %)Greedy를 사용한 문제!주어진 금속 관련 배열을 비싼 순서대로 정렬 후 배낭에 남은 무게만큼 넣도록 구현했다.내 코드const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')let w = parseInt(input[0].split(' ')[0]) // 남은 무게const jewelries = input.slice(1).map(s=>s.split(' '));jewelries.sort((a,b)=>b[1]-a[1]); // kg당 무게 기준 내림차순 정렬let answer = 0;for (const [m,p] of jewelries) { const ..