Menu
-
OverTheWire: Level Goal: Bandit Level 12 → Level 13 풀이2021 SCP Mentoring/OverTheWire: Bandit 2021. 5. 16. 21:26
다음 레벨의 비밀번호는 반복적으로 압축된 파일의 hex dump인 data.txt 파일에 저장되어있다고 한다. 또한 이러한 경우 mkdir을 사용하여 작업할 수 있는 /tmp 아래에 디렉터리를 만드는 것이 유용할 수 있다 한다. 위의 문제에서 말한 것처럼 명령어 ~$ mkdir /cmp/[만들 파일명] 을 통해 ex파일을 만들어 주었다. 그 후 명령어 ~$ cp data.txt /tmp/ex 을 통해 data.txt의 복사본 /tmp/ex 에 생성해주었다. 후에 ~$ mv data.txt a를 통해 파일 이름을 변경해주고, cat으로 파일내용을 확인해 보았다. 16진수인 hex dump로 되어있었고, hex dump를 다시 binary로 바꾸기 위해 명령어 ~$ xxd -r a data 를 사용하여 xx..
-
백준 2566번: 최댓값Language/C 2021. 5. 15. 02:38
https://hi-bald-person.tistory.com/49 백준 2562번: 최댓값 문제를 보자면 자연수를 입력하고, 그중 최댓값과 최댓값이 몇 번째로 입력받은 수인지를 출력해줘야 한다. 자연수를 9개 입력해줘야 하기 때문에 배열을 사용할 것이고, 배열에 들어간 수들을 hi-bald-person.tistory.com 앞선 최댓값 문제가 1차원 배열이었고, 이번 문제는 2차원 배열의 문제이다. 1차원 배열 문제풀이와 별 다를 것이 없긴 하다. 쉽게 코드를 짤 수 있었다. 1차원에서 2차원으로 바뀌었다 해도 풀이법은 비슷하니 직접 한번 해보자.
-
백준 2577번: 숫자의 개수Language/C 2021. 5. 15. 02:17
문제를 풀기는 했으나 어려웠다. 필자가 어려웠다 생각한 부분은 숫자가 각각 몇 번 쓰였는지를 출력해주는 부분인데, 해당 부분은 다른 분들의 풀이를 참조했다. (실상 문제 포인트가 이것인 것 같다.) 배열을 두 개 사용해줘서 한 곳은 scanf로 입력한 값을 저장하고 다른 한 곳은 입력받은 값의 곱의 숫자의 개수를 세주는 데 사용하였다. 주요 포인트를 설명하자면 arr[mul % 10]++이다. 입력받은 세 수를 곱한 값을 mul에 저장해주고, mul을 10으로 나눈 나머지 값에 해당하는 arr 배열의 익 덱스 값을 1씩 증가시켜주는 것이다.
-
백준 2562번: 최댓값 (배열 풀이)Language/C 2021. 5. 15. 00:54
문제를 보자면 자연수를 입력하고, 그중 최댓값과 최댓값이 몇 번째로 입력받은 수인지를 출력해줘야 한다. 자연수를 9개 입력해줘야 하기 때문에 배열을 사용할 것이고, 배열에 들어간 수들을 하나씩 비교해 최댓값을 구해줘야 하기 때문에 for문을 통해 하나씩 비교해주면 될 것이다. 위와 같은 코드를 짜 사용해주었고, for문을 두 번 사용해서도 코드를 짤 수 있지만 가능한 한 코드 길이를 줄일 수 있도록 해주자. * 원래 필자는 위와 같이 for문을 두 번 써서 첫 번째 for문에서는 scan을 해주고, 두 번째 for 문에서는 비교를 하는 방식의 코드를 더 좋아한다. "굳이 for문을 두 번 안 쓰고 한 번에 가능한데? 왜?"라고 생각하는 게 보통일 거라 생각하는데, 필자가 보기 불편하다. (대충 "내 맘"..
-
백준 2576번: 홀수Language/C 2021. 5. 11. 18:30
복잡한 문제의 경우 노트에 필기를 하면서 풀이법을 적어보자. 7개의 자연수를 입력받는다. 7개의 자연수의 홀 / 짝 여부를 결정한다. 홀수일 경우 홀수끼리 더 해주고, 짝수일 경우 더하지 않는다.(0을 더한다.) 홀수 중에 가장 작은 수를 찾아준다. 먼저 자연수를 연속해서 받으려면 배열을 사용해야겠다고 생각했다. 입력받은 자연수 중 홀수의 경우와 짝수의 경우로 나누어 주고, 홀수일 경우에 sum(초기값 0)에 홀수인 값을 더해주고, 짝수의 경우 sum에 0을 더해준다. 만약 입력받은 숫자들이 모두 짝수일 경우 sum은 0의 값을 갖기 때문에 sum ==0 일 경우에는 문제 내용에 따라 -1을 출력해주고, sum != 0 일 경우에는 홀수들을 더한 sum 값을 출력해주면 된다. ** 함수를 사용하여 풀어야..
-
백준 5073번: 삼각형과 세 변Language/C 2021. 5. 11. 16:45
문제가 살짝 복잡하다. (나의 느낌) 필기를 하면서 문제풀이를 생각했다. 삼각형의 조건을 만족(한다. / 안 한다.) 삼각형의 조건을 만족했을 경우에 해당하는 3가지(Equilateral / Isosceles / Scalene), 삼각형의 조건을 만족하지 못했을 경우 (Invalid) 이와 같은 경우들을 생각하고 코드를 짜보았다. 첫 번째로 삼각형의 조건(가장 긴 변의 길이 < 나머지 두 변의 길이의 합)을 만족하는 경우를 찾기 위해 가장 긴 변의 길이를 찾는 Max() 함수를 만들었다. 두 번째로 삼각형 조건이 만족했을 경우에 해당하는 삼각형을 찾아주는 triangle() 함수를 만들어 주었다. 마지막으로 위의 두 함수를 사용하여 세 변의 길이가 모두 0이 아닐 때까지, 입력된 세 변의 길이 중 가장 ..
-
OverTheWire: Level Goal: Bandit Level 11 → Level 12 풀이2021 SCP Mentoring/OverTheWire: Bandit 2021. 5. 1. 15:57
data.txt 파일 안에 다음 레벨로 가기위한 password가 저장되어있는데, 소문자(a-z)와 대문자(A-Z)가 13자 뒤로 밀려있다고 한다. cat 명령어와 tr 명령어 파이프( | )를 사용해주었다. cat data.txt | tr 'A-Z a-z' 'N-ZA-M n-za-m' tr [option] SET1 [SET2] SET1을 SET2로 변경해준다. 보통 tr 명령어를 사용해서 입력을 한다하면, tr 'A-Z a-z' 'N-M n-m' 으로 생각할 것이다. 필자는 그렇게 생각했다. 하지만 이렇게 입력해서는 안된다. 우리는 N-(ZA)-M을 생각해서 그렇게 썼겠지만(우리는 Z가 끝나고 A로 다시 시작하면 된다는 것을 안다.), 컴퓨터는 A-Z까지 순서대로만 알지 도중에 끊어진 (Z가 끝나면 A..