본문 바로가기
728x90

programming/알고리즘 풀이33

[백준(Baekjoon)/JAVA] 9012. 괄호 애초에 입력받은 값의 길이가 홀수이면 짝이 맞을리가 없으니까 길이가 짝수인 것만 살펴본다. result는 몇쌍이 있는지 나타낸다. 14개가 있으면 7쌍이어야 하므로 result == len / 2로 조건문을 달았다. 그렇게 스택을 다 비우고 쌍이 맞아야 YES를 출력리스트에 넣는다. 출력은 리스트를 이용해 한번에 한다. import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.Stack; public class bj9012 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.next.. 2021. 1. 8.
백준(Baekjoon)_5586번 문제풀이 저번에 문자열 정답비율60퍼인거 3시간동안 쩔쩔대서 그냥 78퍼로 했는데 15분컷.. 너무 코딩에 겁내지말자 몽구스야 #include int main(void) { int i, j_sum = 0, i_sum = 0; char str[10000]; scanf("%s", str); for(i = 0; str[i] != '\0'; i++) { if(str[i] == 'J'){ if(str[i + 1] == 'O' && str[i + 1] != '\0'){ if(str[i + 2] == 'I' && str[i + 2] != '\0') j_sum++; } } if(str[i] == 'I'){ if(str[i + 1] == 'O' && str[i + 1] != '\0'){ if(str[i + 2] == 'I' &&.. 2020. 3. 2.
백준(Baekjoon)_11722번 문제풀이 이거 정답비율 64%인거 치고 너무 어려웠다. 아마 이것과 비슷한 문제가 있어서 그걸 풀고 온 사람들 덕에 높은 것 같음. 일단 저 말부터 이해가 잘 안갔음. 가장 긴 감소하는 부분 수열이란, ex) 1 9 3 7 6 2 이렇게 있으면 1을 기준으로 가장 긴 감소하는 부분 수열은 자기자신 1 하나. 그러므로 1. 6을 기준으로하면 9 7 6 해서 길이는 3. 2를 기준으로 하면 9 7 6 2 해서 길이는 4. 기준이 되는 수 1 9 3 7 6 2 1 1 2 2 3 4 이렇게 이 수열은 앞숫자와 관련이있다. 앞수의 감소되는 수열 길이에서 +해나가는 것이라고 보면 됨. 역시 난 구글링을 하였고.. 그나마 간단하게 코드 짜본게 이거다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17.. 2020. 2. 5.
백준(Baekjoon)_2167번 문제풀이 #include int main(void) { int n, m; int i, j, k; int a, b, x, y; int num, total = 0; int arr[300][300] = {0}; //배열 넉넉하게 설정하여 런타임에러방지 scanf("%d %d", &n, &m); for (i = 0; i < n; i++){ for (j = 0; j < m; j++) scanf("%d", &arr[i][j]); } scanf("%d", &num); for (k = 0; k < num; k++){ scanf("%d %d %d %d", &a, &b, &x, &y); for (i = a - 1; i 2020. 1. 28.
백준(Baekjoon)_2163번 문제풀이 이 문제는 내가 형광펜 표시한 N과 M을 이용해서 하면 쉽다. 개인적으로 기본문제라고 생각함. 여기서 초콜릿을 '자른다'라는 의미는 두개를 한번에 자를 수 없고 하나씩 나누어가며 자른다는 것이다. 2 * 2 의 초콜릿이라면 이렇게 3번 자를 수 있는 것이다. 이렇게 식을 도출하면 (n-1)+((m-1)*n)이 나온다. #include int main(void) { int n, m; int result; scanf("%d %d", &n, &m); result = n - 1 + ((m - 1) * n); printf("%d\n", result); } 쉬워서 코드가 간단하다. 이게 끝 /0118 2020. 1. 18.
백준(Baekjoon)_9095번 문제풀이 다이나믹 프로그래밍에서 정답비율 좀 높길래 도전. 근데 어려운편. 첨에 재귀느낌이 왔지만 방학동안 머리를 안쓰니 '재귀 사용해야할 것 같은데 이제부터 어떻게 해야되는거지.' 이러다 결국 몇몇 블로그를 참고하고 난 후 '아 이게 재귀였지.' 하고 풀었다. 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 #include int f(int n)//순서 상관있는 것에 유의하며 세기 { int count = 0; if(n == 1) return count += 1;//1이되는 경우의수 : 1 else if(n == 2) return count += 2;//2가되는 경우의수 : 1+1,2 else if(n == 3) return cou.. 2020. 1. 14.
728x90