https://superohinsung.tistory.com/252 [SangSangstagram] 안드로이드 로그인 화면 구성 및 디자인 지난 프로젝트에 대한 회상 겸 정리할 겸 작성을 해보았다. (물론 너무 오랜 시간이 지나긴했지만...) 작년에 했던 팀플 과제였지만, 그래도 나름? 잘했던 것 같아서 몇몇 기능만 블로그에 리뷰로 superohinsung.tistory.com 지난 번에 로그인 화면에 디자인에 대해서 글을 작성하였고, 이번에는 본격적으로 기능에 대해서 작성을 할 생각입니다. LoginActivity 액티비티에서는 우선 Ui 작동에 필요한 기능들을 포함하고 있습니다. companion object { fun getIntent(context: Context): Intent { return ..
사칙연산 변수 x와 y에 20과 10을 저장하고 x+y, x-y, x*y, x/y을 계산하여서 변수에 저장하고 이들 변수를 화면에 출력하는 프로그램을 작성 #include int main(void) { int x;// 첫 번째 정수를 저장할 변수 int y;// 두 번째 정수를 저장할 변수 int sum, diff, mul, div;// 두 정수 간의 연산의 결과를 저장하는 변수 x = 20;// 변수 x에 2을 저장 y = 10;// 변수 y에 10을 저장 sum = x + y;// 변수 sum에 (x+y)의 결과를 저장 diff = x - y;// 변수 diff에 (x-y)의 결과를 저장 mul = x * y;// 변수 mul에 (x*y)의 결과를 저장 div = x / y;// 변수 div에 (x/..
본 포스팅은 학교에서 수업을 듣고 정리한 내용입니다. 프로그램 개발 과정 복잡한 프로그램을 만들 때는 위와 같은 세부적인 과정을 거치게 된다. 설계 문제를 해결하는 알고리즘을 개발하는 단계 순서도와 의사 코드를 도구로 사용 알고리즘은 프로그래밍 언어와는 무관 알고리즘은 원하는 결과를 얻기 위하여 밟아야 하는 단계에 집중적으로 초점을 맞추는 것 소스 작성 알고리즘의 각 단계를 프로그래밍 언어를 이용하여 기술 알고리즘을 프로그래밍 언어의 문법에 맞추어 기술한 것을 소스 프로그램(Source Program) 소스 프로그램은 주로 텍스트 에디터나 통합 개발 환경을 이용하여 작성 소스 파일 이름 : Ex) test.c 컴파일 소스 프로그램을 오브젝트 파일로 변환하는 작업 오브젝트 파일 이름 : Ex) test.o..
안드로이드 XML View에 대한 구성 우선 이메일과 비밀번호 입력 그리고 메인 타이틀을 배치하였다. 전체적인 뷰는 RelativeLayout으로 구성을 하였는데, 당시에는 여러개의 LinearLayout으로 구성을 하려고 생각하였기에 이렇게 하였다. 나중에 드는 생각이지만 그냥 ConstraintLayout으로 할껄 그랬다. 이때 당시에 이메일과 비밀번호의 입력에 대해서 고민을 많이 하였다. 왜냐하면 실제 유효하지 않은 이메일 패턴과 비밀번호 패턴을 입력할 시에 예외처리를 내부적으로 하기보다는 사용자 Ui에 직접 보여주고 싶었기 때문이다. 그리고 Hint나 부가적인 효과 또한 필요하였다. 그래서 위와 같이 TextInputLayout을 이용하였다. TextInputLayout이란 Android Text..
문제 https://www.acmicpc.net/problem/11066 11066번: 파일 합치기 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본 www.acmicpc.net 어떻게 풀 것인가? 문제를 읽으면서 방향성 자체는 DP로 잡았다. DP에서 중요한 것은 점화식이다. 그래서 우선적으로 그냥 바텀업 방식과 메모제이션으로 문제를 풀었다. 메모이제이션 (Memoization) 이란? DP를 구현하는 방법 중 한 종류이다. 한 번 구한 결과를 메모리 공간에 메모해두고 --> 같은 식을 호출하면 메모한 결과를 그대로 가져오는 기법이다. (값을 기록해 놓는다..
문제 https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 어떻게 풀 것인가? 문제를 읽었을 때 2차원 배열이 보이고 탈출 구멍에 따라 빨간 구슬이 먼저 와야하며, 최소한적으로 판을 흔들어야한다고 했을때는 BFS 문제이구나 싶었지만, 구현이 가미된 BFS였다. 구현은 어렵다. 단순 정답이 정해진 것이 아니라 정말 생각한 것을 프로그래밍으로 구현할 수 있냐? 라는 것을 묻기에 더 그런 것 같다. 처음에..
문제 https://www.acmicpc.net/problem/2568 2568번: 전깃줄 - 2 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100,000 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결 www.acmicpc.net 어떻게 풀 것인가? 문제를 천천히 읽어보자. 두 전봇대 사이 A와 B에서 교차를 하면 안된다. 여기서 단순 구현이라기엔 시간제한 1초이며, 주어진 데이터(전깃줄의 개수)는 100,000 이하의 자연수이다. 브루트포스로 푼다면 1초를 훌쩍 넘긴다. 문제에서 주어진 두 전봇대에 주어진 숫자를 하나의 기준으로 정렬을 해본다면, 인덱스와 값이 보인다. 즉, 가장 긴 오름차순 수열이 아닌 것들을 ..
세그먼트 트리(Segment Tree)란 세그먼트 트리(Segment Tree)는 효율적으로 배열 또는 리스트와 같은 순차적인 데이터 구조에서 구간 쿼리(구간 검색 또는 구간 연산)를 수행하기 위한 자료구조입니다. 주로 구간 합, 구간 최솟값, 구간 최댓 값 등을 빠르게 계산하는데 사용됩니다. 세그먼트 트리는 트리 구조로 표현되며, 각 노드는 배열의 일부 구간에 대한 정보를 저장합니다. 일반적으로 이진 트리 형태를 가지며, 아래와 같은 구성요소를 가집니다. 루트 노드 : 배열 전체 구간에 대한 정보를 저장합니다. 각 내부 노드 : 두 자식 노드의 구간 정보를 합친 결과를 저장합니다. 이를 통해 트리를 아래로 내려가면서 구간 정보를 계산할 수 있습니다. 리프 노드 : 배열의 개별 원소를 나타냅니다. 세그먼..