카카오 코드 페스티벌 예선 5번, 캠핑 풀이 - 2

이전에 포스팅한 정석 풀이 말고 다른 풀이를 보여드리겠습니다. 다른 정답들을 보다가 출제의도와는 다르지만 최적화를 통해 시간내에 풀었고(하지만 시간 차이는 꽤 납니다), 코드도 깔끔하니 예뻐서 포스팅 합니다. 파란색의 주석을 보면서 읽으시면 이해하기 쉬울꺼에요. ...

12월 23, 2017 · Jaejin Jang

카카오 코드 페스티벌 예선1번, 카카오 프렌즈 컬러링북

처음으로 참가한 알고리즘 대회인데, 이 대회 덕분에 알고리즘 공부를 시작하게 되었죠. 본선 진출 1문제 차이로 탈락했었습니다. 이 문제는 1번 문제인데요, 행렬로 주어진 그림에서 영역(상하좌우에서 같은 색으로 된 부분은 같은 영역)의 갯수와 최대 영역의 크기를 구하는 문제입니다. 재귀 문제입니다. flood_fill 알고리즘을 이용해서 푸시면 됩니다. ...

12월 23, 2017 · Jaejin Jang

파비콘 만드는 곳 추천

플랫폼 별로 다 만들어주고 html코드까지 제공해줌 히트다 히트 https://realfavicongenerator.net/

12월 23, 2017 · Jaejin Jang

풀꽃 - 나태주

자세히 보아야 예쁘다 오래 보아야 사랑스럽다 너도 그렇다

12월 23, 2017 · Jaejin Jang

프로그래머스 - 2 x n 타일링

주의해야 할것은 오버플로우! 나머지 연산이 포인트 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public class TryHelloWorld { static long[] dp = new long[10000]; public int tiling(int n) { dp[0] = 1; dp[1] = 2; for(int i=2;i<n;i++) { dp[i] = (dp[i-2]*2)+(dp[i-1]-dp[i-2]); if(dp[i]>99999) dp[i]%=100000; } return (int) dp[n-1]; } public static void main(String args[]) { TryHelloWorld tryHelloWorld = new TryHelloWorld(); // 아래는 테스트로 출력해 보기 위한 코드입니다. System.out.print(tryHelloWorld.tiling(262)); }}

12월 23, 2017 · Jaejin Jang

프로그래머스 - 2016년

Date 오브젝트 쓰기! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TryHelloWorld { public String getDayName(int a, int b) { String answer = ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf2 = new SimpleDateFormat("E"); String dateInString = "2016-"+a+"-"+b; Date date; try { date = sdf.parse(dateInString); answer = sdf2.format(date).toUpperCase(); } catch (ParseException e) { } return answer; } public static void main(String[] args) { TryHelloWorld test = new TryHelloWorld(); int a=5, b=24; System.out.println(test.getDayName(a,b)); } }

12월 23, 2017 · Jaejin Jang

프로그래머스 - N개의 최소공배수

2개의 값에 대하여 gcd를 이용해 lcm을 구하는 것을 N개에 대해 반복함 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 public class NLCM { public long gcd(long a,long b) { if(a==0) return b; else return gcd(b%a,a); } public long lcm(long a,long b) { return a*b/gcd(a,b); } public long nlcm(int[] num) { long answer=num[0]; for(int i=0;i<num.length-1;i++) { answer = lcm(answer,num[i+1]); } return answer; } public static void main(String[] args) { NLCM c = new NLCM(); int[] ex = { 2, 6, 8, 14 }; // 아래는 테스트로 출력해 보기 위한 코드입니다. System.out.println(c.nlcm(ex)); } }

12월 23, 2017 · Jaejin Jang

프로그래머스 - 가운데 글자 가져오기

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class StringExercise{ String getMiddle(String word){ int len = word.length(); if(len%2==0) {//짝수 return word.substring(len/2-1, len/2+1); } else {//홀수 return word.substring(len/2, len/2+1); } } // 아래는 테스트로 출력해 보기 위한 코드입니다. public static void main(String[] args){ StringExercise se = new StringExercise(); System.out.println(se.getMiddle("power")); } } 아래와 같은 풀이도 있다. 짝수와 홀수를 2로 나눴을때의 결과를 잘 활용한 것 같다. 배워야지 ...

12월 23, 2017 · Jaejin Jang

프로그래머스 - 가장 큰 정사각형 찾기

이 문제는 이제 익숙해진 유형 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 class TryHelloWorld { public int findLargestSquare(char [][]board) { int max=0; int min=0; for(int i=0;i<board.length;i++) { for(int j=0;j<board[0].length;j++) { if(board[i][j]=='O') board[i][j]=1; else board[i][j]=0; } } for(int i=0;i<board.length-1;i++) { for(int j=0;j<board[0].length-1;j++) { if(board[i][j]==0||board[i][j+1]==0||board[i+1][j]==0||board[i+1][j+1]==0) continue; else{ min = board[i][j] < board[i][j+1] ? (board[i][j] < board[i+1][j] ? board[i][j] : board[i+1][j]) : (board[i][j+1] < board[i+1][j] ? board[i][j+1] : board[i+1][j]); board[i+1][j+1] = (char) (min+1); if(board[i+1][j+1]>max) max=board[i+1][j+1]; } } } return max*max; } public static void main(String[] args) { TryHelloWorld test = new TryHelloWorld(); char [][]board ={ {'X','O','O','O','X'}, {'X','O','O','O','O'}, {'X','X','O','O','O'}, {'X','X','O','O','O'}, {'X','X','X','X','X'}}; System.out.println(test.findLargestSquare(board)); } }

12월 23, 2017 · Jaejin Jang

프로그래머스 - 공항 건설하기

원래 dp로 풀었는데 알고보니, 단순 비교문제였음.. 그냥 사람수가 가장 많은 도시는 고르면 되는 문제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import java.util.Arrays; public class TryHelloWorld { public int chooseCity(int n, int [][]city) { int idx=city[0][0]; int max = city[0][1]; for(int i=1;i<n;i++) { if(city[i][1]>max) { max = city[i][1]; idx = city[i][0]; } } return idx; } public static void main(String[] args) { TryHelloWorld test = new TryHelloWorld(); int tn = 3; int [][]tcity = {{1,5},{2,2},{3,3}}; System.out.println(test.chooseCity(tn,tcity)); } }

12월 23, 2017 · Jaejin Jang