Loading...

[프로그래머스] 네트워크 (javascript)

bfs로 했지만 연결되는 곳까지 쭉 들어가는 것이 dfs에 가까운 문제인 것 같다. function solution(n, computers) { var answer = 0; let vis=Array(n).fill(0); for(let i=0;i0){ let cur=q.shift(); for(let j=0;j

[프로그래머스] jadenCase 문자열 만들기 (javascript, java)

1. javascript function solution(s) { return s.split(" ").map(v=>v.substr(0,1).toUpperCase()+v.substring(1).toLowerCase()).join(" "); } 2. java class Solution { public String solution(String s) { String answer=""; String sarr[]=s.toLowerCase().split(""); boolean first=true; for (int i = 0; i < sarr.length; i++) { if(first) { answer+=sarr[i].toUpperCase(); }else answer+=sarr[i]; if(sarr[i].equals(..

[swexpert] 7733. 치즈 도둑 (bfs, java)

답의 초기값을 1로 초기화하지 않고 음수 등으로 초기화하면 테스트 한 개를 통과 못한다. 처음에는 1덩이이므로 (모두 1이상임) 1로 초기화해준다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Solution { static int n; static int t; static int map[][]; static int result; static int ypos[]= {0,0,1,-1}; static int xpos[]= {1,-1,0,0}; public static void main(String[] args) { Scanner sc=new Scanner(System.in); t=sc.ne..

[swexpert] 1226. 미로 1 (bfs, java)

원래 시작점 위치 (2인 곳)을 따로 찾아서 시작점으로 넣어줘야 할 것 같은데 모든 예제의 시작점이 같길래 그냥 (1,1)로 넣어줬다. 만약 다른 테스트 케이스도 돌리는 거라면 시작점도 따로 변수에 담아줘야 할 것이다. D4지만 가장 간단한 bfs예제였다. 끝나는 경우는 3인 곳을 끝까지 만나지 못한 경우를 flag변수의 false로 하여 조건 출력해주면 된다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Solution { static int t; static int[][] map; static int[] xpos= {0,0,1,-1}; static int[] ypos= {1,-1,0..

[프로그래머스] 영어 끝말잇기 (javascript)

set으로 중복 여부 검사 진행 턴은 인덱스/사람 수+1 누구인지는 인덱스%사람수 +1 function solution(n, words) { var answer = [0,0]; const set=new Set(); let prev=words[0][0]; for(let i=0;i

[프로그래머스] 쿼드 압축 후 개수 세기 (javascript)

주어진 범위 내에서 하나라도 다른 수가 있으면 시작위치를 기준으로 길이/2 만큼 y,x에 더해서 새로운 시작위치를 만들고 새로운 길이를 len/2로 해서 재귀함수로 던져준다. 중간에 주어진 범위에서 모든 수가 같다면 해당 수의 개수를 +1 더해주고 더 길게 들어가지 않고 len이 1이 되면 더이상 쪼갤 수 없으므로 해당 수를 +1더해주고 끝낸다. --- new 풀이! function solution(arr) { var answer = [0,0]; let n=arr.length; go(0,0,n); function go(y,x,len){ let cur=arr[y][x]; let pass=true; for(let i=y;i

[프로그래머스] 게임 맵 최단거리 (bfs, javascript)

dfs로 풀면 효율성 시간 초과가 난다. 최단 거리인 경우 bfs로 모든 경우의 수를 구할 경우에는 dfs 문제로 많이 갈리는 것 같다. function solution(maps) { let xpos=[0,0,1,-1]; let ypos=[1,-1,0,0]; var answer = -1; const q=[[0,0,1]]; while(q.length!=0){ let y=q[0][0]; let x=q[0][1]; let cnt=q[0][2]; q.shift(); if(y===maps.length-1 && x===maps[0].length-1){ answer=cnt; break; } for(let i=0;i

[프로그래머스] 최소값 만들기 (javascript)

최소값을 만드는 방법은 한 배열에서 남은 수 중 가장 작은 값과 다른 배열의 남은 수 중 가장 큰 값을 곱해서 더하는 것이다. 예제를 보고 눈치채서 이렇게 풀었다. function solution(A,B){ var answer = 0; A.sort((a,b)=>a-b); B.sort((a,b)=>b-a); answer=A.reduce((acc,cur,idx)=>{ return acc+A[idx]*B[idx]; },0) return answer; }

[프로그래머스] 숫자의 표현 (javascript)

function solution(n) { var answer = 0;//n=n for(let i=n;i>=1;i-=1){ let sum=0; let j=i; while(sum+j=1){ sum+=j; j-=1; } if(sum==n){ answer+=1; } } return answer; }

[프로그래머스] 타겟 넘버 (javascript)

인덱스를 1씩 더해 옮기면서 현재 수를 더하거나 빼주는 방식으로 완전탐색해주기 function solution(numbers, target) { var answer = 0; function subset(cnt,sum){ if(cnt===numbers.length){ if(sum===target){ answer+=1; } return; } subset(cnt+1,sum+numbers[cnt]); subset(cnt+1,sum-numbers[cnt]); } subset(0,0); return answer; }