분류 전체보기
-
[C++] BOJ 2456번: 나는 학급회장이다프로그래밍/알고리즘 PS 2024. 3. 29. 20:02
학교에서 진행하는 수업에서 공유받은 알고리즘 문제를 풀어보았다. 문제의 난이도는 브론즈 1으로, 쉬울 것으로 예상하고 문제를 풀었으나 예상보다 코드가 길어지고 3번째 제출에서야 '맞았습니다!!'가 출력되어 브론즈 1 난이도 치고는 어려웠다. 개인적으로는 실버 난이도가 조금 더 적절하다고 생각이 든다. 문제 링크 https://www.acmicpc.net/problem/2456 문제 분석 3명의 후보 중 가장 큰 점수를 받은 후보가 단 한 명인 경우에는 문제가 단순해지지만, 여러 명인 경우에는 조건문을 통해 확인해야 하는 조건이 많아져 코드가 길어지는 문제이다. 이 문제에서 조건문을 유심히 처리해야 하는 내용은 아래에 작성된 문제의 조건이다. 점수가 가장 큰 후보가 여러 명인 경우에는 3점을 더 많이 받은..
-
[C++] BOJ 18870번: 좌표 압축프로그래밍/알고리즘 PS 2024. 3. 28. 21:16
학교에서 진행하는 수업에서 공유받은 알고리즘 문제를 풀어보았다. 문제의 난이도는 실버 2이다. 문제 링크 https://www.acmicpc.net/problem/18870 문제 분석 해당 문제는 배열을 정렬하는 과정이 필요한 문제이다. 배열을 정렬한 이후 문제를 2중 for문으로 풀 수 있다고 생각하였으나, 그렇게 풀 경우 빅오 표기법 상으로 O(n 제곱)이 되어 큰 input에 대해서는 2초 내로 문제를 해결할 수 없게 된다. 즉, 시간 초과가 나게 된다. 따라서 배열을 정렬하는 것 외에도 시간 제한 2초 내로 문제를 풀 수 있도록 하는 방법이 필요했다. 시간 제한을 해결할 다른 방법도 있을지 모르겠으나 필자는 map 자료구조를 활용하여 이러한 문제를 해결하였다. 문제 풀이 먼저 입력으로 받은 배열 ..
-
[C++] BOJ 1032번: 명령 프롬프트프로그래밍/알고리즘 PS 2024. 3. 28. 21:05
학교에서 진행하는 수업에서 공유받은 알고리즘 문제를 풀어보았다. 문제의 난이도는 브론즈 1이다. 문제 링크 https://www.acmicpc.net/problem/1032 문제 분석 해당 문제는 문자열의 공통된 부분과 다른 부분을 구분지어 문자열의 공통된 부분은 문자로, 다른 부분은 ?로 표현하는 문제이다. 입출력 예시는 아래와 같다. 입력 3 config.sys onfig.inf configures 출력 config???? 문제 풀이 문자열 중 하나를 골라 answer 변수에 담아주고 각 문자열 별로 아래의 과정을 반복한다. answer 변수의 글자와 문자열 사이에 다른 글자가 있는지 확인한다. answer 변수의 글자와 문자열 사이에 다른 글자가 있는 경우, 해당 index에 대해 answer 변수..
-
[C++] BOJ 1748번: 수 이어 쓰기 1프로그래밍/알고리즘 PS 2024. 3. 28. 14:07
학교에서 진행하는 수업에서 같이 듣는 팀원이 공유한 알고리즘 문제를 풀어보았다. 문제의 난이도는 실버 4이다. 문제 링크 https://www.acmicpc.net/problem/1748 문제 분석 해당 문제는 1부터 n까지의 숫자를 이어 붙여 만들어낸 새로운 수의 자리수를 구하는 문제이다. 문제 풀이 새로운 수의 자릿수를 구하려 하다 보면 1 ~ 9는 1, 10 ~ 99는 2, 100 ~ 999는 3... 이렇게 자릿수가 늘어날 때마다 1씩 증가한 수를 더해주는 것을 알 수 있다. 이를 토대로 아래와 같은 순서를 지키며 코드를 구현할 수 있다. 자릿수의 값을 초기에는 0으로 지정한다 숫자가 10 이하일 경우 자릿수의 값에 1을 더한다 숫자가 10 이상이고 100보다 작으면 자릿수의 값에 2를 더한다 숫..
-
[C++] BOJ 9506번: 약수들의 합프로그래밍/알고리즘 PS 2024. 3. 28. 13:52
학교에서 진행하는 수업에서 같이 듣는 팀원이 공유한 알고리즘 문제를 풀어보았다. 문제의 난이도는 브론즈 1으로, 빠르게 풀 수 있을 거라 생각했지만 출력을 적절하게 하도록 코드를 작성하는 데에 예상보다 시간이 걸렸다. 문제 링크 https://www.acmicpc.net/problem/9506 문제 분석 해당 문제는 완전수를 찾는 문제이다. 완전수란 자기 자신을 제외한 모든 약수를 더했을 때 자기 자신과 같은 값이 나오는 수를 의미한다. n이 완전수가 아님이 판별되면 n is NOT perfect.를 출력한다. n이 완전수일 경우 n을 약수들의 합으로 표현해야 하는데, 이 부분에서 코드가 길어졌다. 문제 풀이 먼저 주어진 숫자 n의 약수를 구하는 법을 판단해보자. 어떤 수 k가 있을 때, n % k ==..
-
[C++] BOJ 1629번: 곱셈프로그래밍/알고리즘 PS 2024. 3. 28. 13:06
학교에서 진행하는 수업에서 적절한 알고리즘 문제를 찾아보고 공유하게 되었다. 가능하면 문제 설명이 간결한 문제를 찾고 싶었고, 백준 사이트에서 적절한 난이도의 문제를 찾게 되었다. 문제 링크 https://www.acmicpc.net/problem/1629 문제 분석 해당 문제는 정답률이 2024년 3월 기준 약 27%로 꽤 낮은 편에 속한다. 이는 문제의 시간 제한이 0.5초여서 생각보다 단순히 접근하면 틀리기 쉬운 문제이기 때문으로 보인다. 예를 들어 문제의 입력 조건과 시간 제한을 확인하지 않고 아래와 같은 코드를 작성하면 '틀렸습니다'가 출력된다. int main(void) { int A, B, C; cin >> A >> B >> C; // A를 B번 곱하고 C로 나눈 나머지를 출력하는 코드 in..
-
TIL 2022.07.06프로그래밍/안드로이드 2022. 7. 6. 21:54
Android 오늘은 생일을 선택하면 생일로부터 오늘까지 몇 시간이 지났는지 알려주는 앱을 만들어보았다. 1. Linear Layout Linear Layout을 활용하여 상하(Vertical), 좌우(Horizontal)로 레이아웃을 잡는 방법을 공부하였다. Linear Layout 내의 children은 특정한 방향으로 정렬되며 gravity, orientation 등의 속성을 활용해 어떻게 정렬될지 지정할 수 있다. gravity 속성을 통해 children을 가운데 정렬, 오른쪽 정렬, 왼쪽 정렬, 위로 정렬, 아래로 정렬 등의 방법 중 어떤 방법으로 정렬할지 정할 수 있다. 가능하면 right 정렬보다는 end 정렬, left 정렬보다는 start 정렬을 사용하는 것이 좋다. 한국어는 좌측에서 ..
-
[iOS] Auto Layout을 이용하여 페이스북의 Bottom Sheet을 만들어보자! - Part 2프로그래밍/iOS 2021. 5. 26. 16:40
저희가 앞에서 Bottom Sheet이 열리고 닫히는 애니메이션을 만들고, 사용자가 button을 누르면 Bottom Sheet이 열리고, dimmedView를 탭하면 Bottom Sheet이 닫히도록 구현해주었습니다! 이번에는 Bottom Sheet을 드래그하면 발생하는 애니메이션과 기능을 구현해주도록 할게요~ 구현을 시작하기 전에, Bottom Sheet의 두 가지 상태에 대해 설명해 드릴 거에요! 두 가지 상태는 각각 .expanded와 .normal로 구현해줄 겁니다 ㅎㅎ Bottom Sheet의 상태를 지정하기 위한 enum 만들기 Bottom Sheet의 상태를 지정하기 위해 enum을 만들어 줍니다~ class BottomSheetViewController: UIViewController {..