본문 바로가기

백준

(43)
[C++] 리모컨 백준 1107번 dfs로 문자열을 열심히 만들다가 뭔가 이상하다는 느낌이 들어서 방법을 고쳤다 처음 생각한 방법은 문제에 있는 예시처럼 5457이면 먼저 5를 쓸수 있는지 확인해서 5, 그다음 54, 545, 5455 이런식으로 문자열을 늘려갔다 하지만 999와 같은 경우는 1000 - 1이 유리한데 내 방식은 찾지 못할 것 같았다 예외 처리를 해주기에는 이런 상황이 너무 많을 수 있다는 생각이 들어 제한 조건을 다시 살펴보았다 채널은 총 500000개이고 한 문자열을 만들 수 있는지 없는지 확인하는데에는 최대 6밖에 들지 않았다 따라서 만들 수 있는 전체 문자열을 확인하는것이 예외처리도 없고 간편하겠다는 생각이 들었다 다만 입력으로 들어오는 채널은 500000이하이지만 500001 - 1 이런식으로 만..
[C] Z 백준 1074번 solved ac 클래스 문제를 전부 풀어보기를 시작했다 재귀를 이용하여 풀었던 Z 문제 풀면서 예전에 Icpc 기출인 philosopher's walk 문제의 쉬운버전이라고 느껴졌다 문제는 오랜만에 알고리즘을 다시 해서 그런가 long long 신경안써서 overflow 일어난 것과 부등호 부주의 했던 점ㅠㅠ 바빠도 일주일에 몇문제씩은 꼭 풀어야지 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 #include #include long long int dfs(long long int N, int r, int c){ if(N==2){ if(r==0 && c==0) return 0; else if(r==0 && c==1)..
[C++] 연산자 끼워넣기 백준 14888번 문제 읽으면서 쉽게 풀수있도록 많이 신경써준 문제라는 느낌이 들었다 먼저 연산자 우선순위 고려도 안해도 되었고 중간에 계산되는 식도 int범위를 초과하지 않는다고 친절히 알려주었다 아마 그래서 solved ac 실버로 측정된 것 같다ㅎㅎ 삼성 SW 기출 문제집에 있는 몇안되는 실버 문제 dfs 순열 코드를 응용해서 작성해봤다 숫자 배열은 그대로 두고 그 사이사이에 어떤 연산자가 들어갈지를 전부 찾아주었다 이때 연산자 순서는 직관적으로 확인할 수 있게 string으로 그냥 넣어주었다 전체 숫자 사이에 연산자들이 정해지면 결과를 차례로 계산하여 최소,최대값과 비교해주었다 마지막에 최소값과 최대값만 출력해주면 끝! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1..
[C] 주사위 굴리기 백준 14499번 오랜만에 머리속에서 공간 돌려봤던 문제 중고등학교 시절에 수학문제 풀던 기분이었다ㅋㅋㅋ 주사위 굴리는 로직만 파악하면 까다롭지는 않았던 문제다 동서남북 각각 손으로 그려보며 각 방향별로 주사위 어느 위치에 있던 숫자가 어디로 가는지를 파악했다 나머지는 문제에서 하라는 그대로 숫자를 복사하고 출력만했다 디버깅 안하면서 풀었는데 바로 맞춰서 뿌듯 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 ..
[C] 컨베이어 벨트 위의 로봇 백준 20055번 실버 수준인 만큼 문제에서 하라는대로만 하면 어려운 반례 없이 바로 맞출 수 있었다 생각해보니까 solved ac 난이도 끄고 풀어야겠다 앞으로 아무튼 삼성 기출이라고 해도 단순 구현이 가능한지 먼저 시간복잡도를 대충 확인해보았다 벨트 회전을 하나하나 다 해준다해도 최대 200개 이고 내구도도 1000까지밖에 없어서 단순 구현도 무리가 없어 보였다 이번에도 디버깅 과정이 포함된 코드를 올려보았다 벨트 돌리는 것을 가장 먼저 구현했는데 뒤에서부터 한칸씩 땡겨줬다 그리고 가장 앞에 있는 로봇이 N번째 위치라면 로봇을 벨트 위에서 내리고 가장 앞에 있는 로봇의 위치를 다시 찾아주었다 벨트가 다 돌아갔으면 이제 로봇들이 움직일 차례이다 가장 앞에 있는 로봇부터 이동가능한 경우 한칸씩 이동시켜주..
[C] 사다리 조작 백준 15684번 출력조건을 제대로 안읽은 값을 치룬 문제... 답이 3 이상이면 그만 셌어야했는데 문제만 읽고 그 점을 생각 못했다ㅠㅠ 골드 4 수준인데 틀리고 시간초과 나서 속상했다.. 아무튼 삼성 기출답게 그냥 다 구현했다 dfs로 사다리를 그려가면서 답이 되는지를 체크했다 답이 되는지 체크해주는 isEnd 함수에서는 1부터 N까지 i번째가 i번째로 내려가는지 확인했다 풀면서 중간에 실수 했던거는 dfs 함수 내부에서 아무 생각없이 다시 (1,1)위치부터 for문으로 확인했던것! 이미 확인했던 부분이니까 중복을 막으려면 중간부터 다시 반복문을 돌아주어야 한다 그래서 while문으로 고쳐서 해결! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2..
[C] 게리맨더링 2 백준 17779번 별찍기 응용 느낌ㅋㅋㅋ 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 #include int map[25][25]; int arr[25][25]; int N,ans=1000000; void ..
[C] 2048 (easy) 백준 12100번! 문제랑 코드도 너무 길고 사진도 많아서 이번 문제는 코드랑 풀이만ㅎㅎ 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 ..