전체 글124 자바 - 프로그래머스 - 숫자 짝꿍 (feat. 시간초과) 숫자 짝꿍 문제는 다음과 같다.문제와 예시 함정이 많아 시간이 생각보다 많이 걸렸고 시간초과 등의 에러가 발생하여타 풀이를 참조하여 풀었다. 🤓 코드 설계1. x,y를 int로 치환하기2. 이중 for문을 돌려서 동일한 값 PriorityQueue에 넣어 반환하기 🤨 구현한 코드 (복잡한 로그 주의⛔️)더보기package ImplementationAlgorithm;//import java.io.IOException;import java.lang.management.LockInfo;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Queue;import java.util.stream.Stream;public class.. 2024. 5. 4. 자바 - 프로그래머스 - 로또의 최고 순위와 최저 순위 (최적화 하기) 프로그래머스에서 로또의 최고 순위와 최저 순위를 풀었다. 문제는 어렵지 않았으나 최적화된 코드를 고민해 보는 시간을 가졌고 이번 블로그는 그 내용을 다뤘다. 문제와 예시는 다음과 같다. 해당 문제에 대한 접근 방법은 생각보다 용이했다. 🤓 코드 설계 1. lottos와 win_nums의 같은 값이 있다면 카운트한다. 2. 0의 개수를 카운트한다. 3. 같은 값의 개수는 최저 순위, 같은 값의 개수+0의 개수가 최고 순위가 된다. 🤨 구현한 코드 (복잡한 로그 주의⛔️) 그렇게...구현한 나의 코드는 else if의 성지가 되었다... package ImplementationAlgorithm; import java.io.IOException; import java.util.Arrays; public cla.. 2024. 4. 23. 자바 - 프로그래머스 - 소수 만들기 (feat. 약수) 소수 구하기 문제를 풀어보았다. 문제와 예시는 다음과 같다. 여기서 소수란 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다. 예를 들어, 5는 1×5 또는 5×1로 수를 곱한 결과를 적는 유일한 방법이 그 수 자신을 포함하기 때문에 5는 소수이다. (참고 : 위키백과) 1. 어떤 문제가 있었는지 결국 약수가 1과 자기 자신만을 가진, 약수가 총 2개인 수를 구하는 방법이었다. 2. 내가 시도해 본 것들 (힌트) 아래 힌트를 보기 전에 스스로 먼저 문제를 고민해보고 시도해보길 추천한다! 🤓 코드 설계 (1) 3개의 수를 더하는 방법 삼중 for 문을 돌려서 합계를 구한다. (2) 합계의 약수를 구하기 위해 나눌 수를 for문을 통해 만들어낸다. (3)약수를 구하는 방법은 나머지가 0인 수로 .. 2024. 4. 18. 자바 - 프로그래머스 - 카드 뭉치 (feat. 런타임 에러) TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 1. 어떤 문제가 있었는지 프로그래머스에서 카드 뭉치 문제를 풀다가 다음과 같은 문제에 도달했다. 1) 테스트 케이스 실행 시 런타임 에러가 나다. 우선 문제와 예시를 보자. 사실 카드 뭉치의 경우, 문제가 제법 단순해서 조금 고민하고 바로 코드를 적어갔다. 참, 아래 내용은 코드 설계가 있기 때문에 한 번 더 고민하고 문제풀이 시도를 해보길 바란다! 🤓 코드 설계 // 한 번만 사용 가능 // 꼭 다음 카드만 사용 가능 // 단어 순서 바꿀 수 없음 // for문 돌면서 해당 카드가 카드 더미에 없을 때 다음 더미에도 카드가 있는지 확인해 보기 꼭 다음 카드만 사용했기에 기본 배.. 2024. 4. 15. 자바 - 프로그래머스 - 두 개 뽑아서 더하기 (Stack) TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 1. 어떤 문제가 있었는지 프로그래머스 문제 중 두 개 뽑아서 더하기 라는 문제를 마주했다. 내용은 다음과 같다. 2. 내가 시도해 본 것들 🤓 코드 설계 (1) Sort로 정렬 (2) 정렬한 배열을 이중 for문으로 값 구하기 (3) 중복값 제거하기 (4) Sort로 배열 정렬 (2) 번에 있어서 처음에는 배열에 담을 그릇을 Queue로 사용하였으나 FIFO이기 때문에 순서대로 담긴 것은 오름차순이었다. 이때 for문을 돌려 위에서부터 아래로 배열을 담아 que.pop()을 하면 됐겠지만 더 효율적인 방법을 생각하다가 Stack을 구현하게 되었다. Stack은 FILO이니 단방향.. 2024. 4. 9. 배열 복사 - Arrays.copyOfRange() 와 Arrays.copyOf() Arrays.copyOf()와 Arrays.copyOfRange()은 둘 다 배열을 복사하여 새로운 배열을 생성하는 데 사용됩니다. 그러나 두 메서드 간에는 몇 가지 중요한 차이점이 있습니다. Arrays.copyOf() public static int[] copyOf(int[] original, int newLength) - original: 복사할 원본 배열입니다. - newLength: 새로운 배열의 길이를 지정합니다. `Arrays.copyOf()` 메서드는 원본 배열의 일부가 아닌 전체를 복사하여 새로운 배열을 생성합니다. 이때, `newLength` 매개변수는 생성될 배열의 새로운 길이를 지정합니다. 만약 `newLength`가 원본 배열의 길이보다 크다면, 추가된 요소는 해당 데이터 타입의 .. 2024. 4. 9. 배열 복사 - Arrays.copyOfRange() TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 :) 1. 어떤 문제가 있었는지 프로그래머스에서 K번째수 를 풀다가 배열을 복사하는 방법을 찾아보게 되었다. 먼저 프로그래머스 문제와 예시는 다음과 같다. 2. 내가 시도해 본 것들 🤓 코드 설계 문제를 풀기 위해 나름의 설계를 했다. [이중 for문을 사용해서 배열 선언 및 저장하기] (1) i~j번째 숫자 배열을 찾아서 새로운 배열에 저장하기 (2) 배열 정렬 (3) k 번째 숫자 반환 🤨 구현한 코드 (복잡한 로그 주의⛔️) 그렇게 해서 도출된 코드는 다음과 같다. import java.util.Arrays; class Solution { public int[] solutio.. 2024. 4. 8. 자바 - 백준 - 1436번 영화감독 숌 나에게는 아직 어려운 실버 문제. 그렇지만 기록을 남기지 않으면 또 까먹을 나를 알기에, 또 누군가에게는 도움이 되었으면 하는 바람으로 글을 남긴다. 백준의 1436번 문제, 영화감독 숌의 힌트를 주자면 해당 문제는 브루트포스 알고리즘 이다. 온갖 경우의 수를 알아보는 브루트포스의 이번 문제는 다음과 같다. 이 문제를 보았을 때, 브루트포스니까 무식하게 접근해야지라는 아주 어리석은 태도를 가졌었는데 OH NO, 시간만 버렸다. 처음 나의 접근방법은 666이 카운팅 되는 패턴이 있을 것이라고 판단하여 액셀을... 사용했다. 오로지 패턴을 알기 위해..! 그렇게 무식한 나의 접근방법은 30분이라는 귀중한 시간을 허비하게 만들었고, 정신 차리고 다른 해법을 고민하기 시작했다. 고민은 했으나 답은 나오지 않았다.. 2024. 4. 5. 자바 - 프로그래머스 - 숫자 문자열과 영단어 숫자 문자열과 영단어 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제와 예시 🤨 구현한 코드 (복잡한 로그 주의⛔️) 처음 문제를 보았을 때, 먼저 떠오른 생각은 영문자를 숫자로 인식해서 바꿔주면 되겠지였다. 분명 자바의 내장 함수가 있었는데 기억이 안 나서 20분 정도 이것저것 끙끙 시도해 보다가 string의 replace()를 깨달았다. 나란 사람.. 기본 함수는 외우자 😂 그렇게 해서 완성된 코드.. class Solution { public int solution(String s) { s = s.replace("zero", "0"); s = .. 2024. 4. 4. 자바 - 프로그래머스 - 삼총사 프로그래머스 문제 '삼총사' 를 풀어보았다. 문제와 예시는 다음과 같다. 😞 처음 구현한 코드 (복잡한 로그 주의⛔️) import java.io.IOException; public class Main { public static void main(String[] args) throws IOException { int[] number = {-2, 3, 0, 2, -5}; int answer = 0; // 셋 더 해서 0이 되어야 함 // 경우의 수 // 3 ≤ number의 길이 ≤ 13 for(int i=0; i< number.length-2; i++) { for (int j = 1; j < number.length; j++) { for (int z = 2; j < number.length; j++) .. 2024. 4. 2. 자바 - 프로그래머스 - 이상한 문자 만들기 프로그래머스 문제 '이상한 문자 만들기' 풀이 과정을 정리해 보았다. 😡 처음 구현한 코드 import java.io.IOException; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { String s = "try hello world"; String answer = ""; char[] charS = s.toCharArray(); String[] strS = new String[charS.length]; // 짝수, 홀수 -> 대문자로 변환 for (int i=0; i 대문자로 변환 class Solution { public String solution(Strin.. 2024. 4. 2. 자바 - 최대공약수와 최소공배수 구하기 프로그래머스 문제를 풀다가 최대공약수와 최소공배수 푸는 법을 간단하게 정리해 보았다. (참고 문제: 최대공약수와 최소공배수) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제와 예시 먼저 최대공약수는 for문을 돌리면서 주어진 두 숫자의 나머지를 0으로 만드는 최대 숫자를 구하는 방식을 사용하였다. for (int i=1; i 2024. 3. 28. 자바) 문자열이 숫자인지 확인하는 방법 (참고 프로그래머스 - 문자열 다루기) 프로그래머스 알고리즘 문제 - 문자열 다루기 기본 - 를 풀다가 문자열이 숫자로 이루어졌는지 확인하는 방법을 정리해 보았다. 문제와 예시 힌트이자 결론부터 말하면 3가지 방법이 있다. 그전에 잠시! (아직 문제 풀이를 시도하지 않았다면 적어도 30분 이상은 고민해 보시길 추천한다) (혹시 문제에 대한 힌트가 필요하다면 여기를 눌러보자.) 자 - 3가지 방법은 다음과 같다. 1. chartAt()을 활용하여 숫자 체크하기 2. isDigit() 함수 활용하기 3. NumberFormatException 활용하기 1. chartAt()을 활용하여 숫자 체크하기 제일 직관적인 방법이다. for문을 돌려서 문자 하나마다 char형으로 제시한 숫자와 동일한지 확인하기 String s = "983z"; boolea.. 2024. 3. 26. 자바) 등차수열 가볍게 알아보자! 프로그래머스 알고리즘 문제, 부족한 금액 계산하기를 풀며 등차수열의 벽을 느꼈다. 중학생 때 공부했던 공식은 저 멀리 사라지고 이름만 알고 있는 상태이기에 문제를 바탕으로 간단한 정리를 해본다. 문제와 예시 여기서 잠깐! 아래에는 바로 답변이 보이기에 문제를 아직 풀지 않은 분들은 스스로 생각을 더해보고 참고하시길 추천한다 :) 등차수열로 푼 답변 class Solution { public long solution(int price, int money, int count) { long answer = -1; answer = (long)price*count*(count+1)/2 - money; return answer 2024. 3. 26. 자바) 배열을 문자열로 변환하는 방법 (char 배열 포함) Java에서 배열을 문자로 변환하는 방법에는 3가지가 있다. 1. 배열을 문자열로 변환 - Arrays.toString() 2. char 배열을 문자열로 변환 - String.valueOf() - new String() 1번 코드 예시 String s = "abcde"; char[] charS = s.toCharArray(); System.out.println("charS = " + Arrays.toString(charS)); // charS = [a, b, c, d, e] 간혹 배열 안에 값이 잘 들어갔는지 확인하기 위해 System.out.println(charS) - 배열명만 입력하는 경우가 있는데, 이 경우, 배열의 위치를 알려주므로 주의하자. 요런식으로 나타난다 🥲 2번 코드 예시 - Strin.. 2024. 3. 25. Java에서 대소문자 크기 비교하기 (참고: 프로그래머스 - 자바 - 문자열 내림차순으로 배치하기) 프로그래머스에서 문제를 풀다가 자바에서는 대소문자 비교도를 알고 있으면 좋을 것 같아 기록을 남긴다. 참고한 문제 : 문자열 내림차순으로 배치하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제와 예시는 다음과 같다. 결론부터 말하면 비교도는 대문자 2024. 3. 25. 자바) 문자를 char 타입의 배열로 변환하는 2가지 방법 문자(String)를 배열(문자열)로 변환하는 방법 2가지를 소개합니다. 1. 반복문 String s = "abcde"; char[] charS = new char [s.length()]; for (int i=0; i 2024. 3. 25. 프로그래머스 - 가운데 글자 가져오기 - 자바 프로그래머스 알고리즘 문제를 풀다가 해결과정을 기록으로 남겨보았습니다. 가운데 글자 가져오기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제와 예시는 아래와 같습니다. 문제를 풀기 위해 설계 과정에서 문자열을 char 배열로 변환 후 저장해야겠다고 생각하였습니다. 그래서! 문자/문자열(String)을 배열로 변환하는 방법 2가지를 소개합니다. 1. 반복문 String s = "abcde"; char[] charS = new char [s.length()]; for (int i=0; i 2024. 3. 25. Kotlin과 친해지기 3 - class, constructor(1) 오늘은 코틀린의 클래스, 생성자에 대해 공부했다. 코틀린 공식문서에 따르면 클래스에 대한 정의는 다음과 같다. 코틀린의 클래스는 클래스의 이름과, 헤더(파라미터, 주 생성자 등) { }를 감싸고 있는 바디로 이루어진다. 만약 바디가 없으면 { }은 생략할 수 있다. 코틀린의 생성자는 다음과 같다. 클래스에는 주 생성자가 있으며 2개 이상의 secondary 생성자가 있을 수 있다. 주 생성자는 클래스의 해더에서 선언되며 클래스의 이름과 선택적 파라미터 타입 뒤에 선언된다. 주 생성자에 어노테이션이나 visibility modifier가 없으면 constructor 키워드는 생략이 가능하다. *아래 생성자의 visibility modifier 참고 주 생성자는 헤더 안에 존재하는 인스턴스와 인스턴스의 pr.. 2023. 12. 11. Kotlin과 친해지기 1 개발자로서 첫 커리어를 시작하게 되었다. 그 스타트는 백엔드 개발자/CS 포지션으로 시작됐다! 스타트업이기에 CS + 기획 + 개발 모두를 해야하는데 이 3가지를 모두 잡을 수 있다고? 오히려 좋아!라는 마인드가 앞섰다. 첫 장벽이 나타났다. 회사는 Kotlin을 사용하고 있었다. 주특기 언어로 Spring을 배운 나로서 또 다른 도전이었다. 언어가 다르다고? 오히려 좋아! 그렇게 해서 시작된 Kotlin과 친해지기 :) 이제부터 회사에서 배우고 스스로도 공부한 내용을 정리해보려 한다. 감사하게도 다니는 회사에서 멘토(?) 님이 도와주신다고 하셔서 정말 감사했다. 이제 나는 잘 따라가는 일만 남았다! 멘토님의 플로우를 따라가며 개념적인 것이나 이해가 더 필요한 부분은 스스로 공부를 해서 정리하였다. 또한.. 2023. 12. 6. 프로그래머스 - 문자열의 앞의 n글자 - 자바 난이도 : Level 0 문제는 문자열 my_string에서 n만큼 앞에서부터 문자열을 가져오는 것이다. 문자열을 가져오는 함수로 subString 함수가 생각났다. 1. substring(start, end) my_string.substring(start, end)이라면 start번부터 end까지의 문자열을 가져온다. 예) my_string이 ProgrammerS123, n이 3인 경우, my_string.substring(0,n) 는 my_string.substring(0,3)으로 값은 Pro 2. 1. substring(start) my_string.substring(start)이라면 start부터 문자열을 가져온다. 예) my_string.substring(0)인 경우, 값은 ProgrammerS.. 2023. 12. 4. application.properties - mysql.cj.jdbc.Driver 빨간줄 Gradle에 mySql을 주입한 후 application.properties에 정보를 입력하는 부분에서 에러가 발생하였다. 에러 사항은 해당 클래스 또는 패키지를 찾지 못한다는 의미였는데 build.gradle과 연관이 되어 있다고 생각하였다. build.gradle에 추가된 부분은 다음과 같다. 관련 에러를 찾아보니 mysql의 버전과 연관이 높다고 하여 현재 내가 사용하는 sql의 버전을 확인해 보았다. 현재 버전은 8.0.33 이 부분을 보안하기 위해 build.gradle에서 버전 정보를 추가하였다. 에러가 사라졌다. 내가 겪은 에러는 버전이 일치하지 않은 부분이었지만 이 외에도 다양한 이유로 에러가 날 수 있다고 생각된다. 그와 관련된 에러가 발생 시에는 추가적으로 TIL을 올려야겠다. 2023. 11. 14. 백준 11047번 동전 0 - 그리디 - 자바 문제는 다음과 같다. 동전 0 문제는 그리디 문제에 속한다. 그리디에 대한 설명은 타 블로그의 포스트를 참조하였으니 궁긍하면 하단을 참고해주시면 될 것 같다! 누군가에게는 쉬울 수 있는 문제이지만 나는 꽤 오랜 시간이 걸렸던 문제이다. 내가 포인트로 배운 부분은 다음과 같다. 1. 입력 시 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어지는 값을 넣는 방법 2. 동전 개수의 최솟값을 구하기 위해서 i--로 로직을 구하는 방법 3. 첫 코드가 틀린 이유와 수정된 방향 1. 입력 시 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어지는 값을 넣는 방법 // 둘째 줄부터 N개의 줄에 동전의 값 Ai 입력 받기 int[] coins =new int[N]; for (int i = 0; .. 2023. 11. 12. 백준 1120번 문자열 - 자바 1120번은 브루트포스 문제이다. 문제는 다음과 같다. 입출력 결과는 다음과 같다. 결론부터 말하자면 구지 문자열 A 앞뒤로 알파벳을 추가할 필요가 없다고 생각이 들었다. 왜냐면! 어차피 문자열 A이 B에 동일하게 있는지 확인을 하면 된다고 생각하여 각각의 문자열을 비교/대조하면 된다고 생각하였다. 우선 각각의 값을 받아야하므로 BufferedRreader을 사용하였다. 입력되는 값들이 공백으로 띄어져 있으므로 각각의 값을 받기 위해 StringTokenizer을 사용하였다. 이후에 최소값과 비교하기 위해 최대값을 가진 변수를 초기화하였다. 이중 for문을 사용해서 문자열 A와 B의 인덱스를 확인하였다. 첫 번째 for문는 B를 순회하며 길이를 파악하는 용도! 두 번째 for문은 A를 순회하며 길이를 파.. 2023. 10. 30. 백준 1543번 문서 검색 - 자바 1543번은 브루트포스 문제이다. 문제는 다음과 같다. 예제 입력과 출력은 다음과 같다! 결국 중복되는 단어의 수를 겹치지 않고 세어야하는 것으로 이해했다. 이번 알고리즘은 검색할 단어를 문서에서 반복해서 확인해야했으므로 변수 2개를 각각 입력할 수 있도록 하고, 반복된 단어의 수를 알아야 하므로 count 변수를 추가하였다. 이후에는 indexOf() 함수를 사용하여 word라는 단어가 document에 있으면 몇 번째에 있는지 확인할 수 있는 함수를 만들었다. indexOf()함수에 대한 정보를 주석에 추가하였으니 도움이 되길 바란다! While문을 사용하여 반복해서 count의 개수를 추가하고 더 이상 단어가 반복되는 것이 없으면 break로 루프를 나오게 하였다. 완성 코드 import java... 2023. 10. 30. TCP/IP 프로토콜 TCP/IP 프로토콜은 네트워크 통신을 관리하기 위한 표준화된 프로토콜 스위트로, 인터넷과 기업 네트워크에서 널리 사용됩니다. 다음은 TCP/IP 프로토콜에 대한 집중적인 설명입니다: TCP (Transmission Control Protocol): TCP는 연결 지향적인 프로토콜로, 안정적이고 신뢰성 있는 데이터 전송을 제공합니다. 데이터는 패킷 단위로 전송되며, 패킷의 수신 여부를 확인하는데 사용됩니다. 이로써 데이터 분할 및 재조립, 에러 검출 및 복구, 흐름 제어를 수행하여 데이터 손실과 순서 오류를 방지합니다. 주로 웹 브라우징, 이메일, 파일 전송 등에서 사용됩니다. IP (Internet Protocol): IP는 네트워크 계층에서 작동하며, 데이터 패킷을 라우팅하고 목적지까지 전달합니다. .. 2023. 10. 17. OSI 7계층 OSI(Open Systems Interconnection) 모델은 컴퓨터 네트워크와 통신 시스템에서 데이터 전송 및 통신을 표준화하기 위한 개념적인 프레임워크를 제공합니다. 이 모델은 7개의 계층으로 구성되며, 각 계층은 특정한 역할 및 기능을 수행합니다. 다음은 OSI 모델의 각 계층에 대한 간단한 설명입니다. 물리 계층 (Physical Layer): 물리적 매체(전선, 광섬유, 무선 등)를 통해 비트를 전송하는 역할을 합니다. 전기적 신호, 비트 스트림, 하드웨어 장치 등과 관련됩니다. 데이터 링크 계층 (Data Link Layer): 물리 계층에서 전송된 데이터를 프레임(Frame)으로 분할하고, 에러 검출 및 수정을 수행합니다. MAC (Media Access Control) 주소를 사용하여.. 2023. 10. 17. DDD (Domain-Driven Design) 도메인 주도 설계(Domain-Driven Design, DDD)은 소프트웨어 개발 방법론과 설계 철학의 한 형태로, 복잡한 소프트웨어 시스템을 개발하는 데 도움이 되는 개념과 원칙을 제공합니다. 에릭 에반스(Eric Evans)가 2003년에 그의 책 "Domain-Driven Design: Tackling Complexity in the Heart of Software"에서 소개한 개념입니다. DDD의 핵심 아이디어와 개념은 다음과 같습니다: 도메인: DDD는 소프트웨어의 핵심 비즈니스 영역을 "도메인"이라고 부릅니다. 도메인은 특정 비즈니스 문제를 해결하는 데 중요한 역할을 하는 모든 개념, 규칙, 프로세스 및 데이터를 포함합니다. 도메인 모델: DDD에서 가장 중요한 개념 중 하나는 "도메인 모델.. 2023. 10. 17. CS) 프레임워크와 라이브러리의 차이 프레임워크(Framework)와 라이브러리(Library)는 모두 소프트웨어 개발에서 사용되는 코드의 재사용을 촉진하는 도구이지만, 그들 간에 중요한 차이가 있습니다: 제어 흐름: 프레임워크: 프레임워크는 애플리케이션의 제어 흐름을 정의하고 제어합니다. 개발자는 프레임워크의 규칙을 따라야 하며, 프레임워크가 개발자 코드를 호출하는 형태로 작동합니다. 개발자는 프레임워크에서 제공하는 틀 안에서 작업합니다. 라이브러리: 라이브러리는 개발자가 필요한 기능을 필요에 따라 선택적으로 사용할 수 있는 코드 모음입니다. 라이브러리를 사용하는 개발자가 제어 흐름을 완전히 제어하며, 라이브러리 함수를 필요한 위치에서 호출합니다. 역할: 프레임워크: 프레임워크는 애플리케이션의 기본 구조를 제공하고, 애플리케이션의 생명주기.. 2023. 10. 16. CS) 동기와 비동기의 차이 동기(Synchronous)와 비동기(Asynchronous)는 프로그래밍 및 컴퓨팅에서 중요한 개념으로, 작업의 실행 및 제어 흐름을 다루는 방식을 나타냅니다. 다음은 동기와 비동기의 주요 차이점을 설명합니다: 작업의 완료 시간: 동기: 동기 작업은 순차적으로 실행되며, 하나의 작업이 완료될 때까지 다음 작업은 시작되지 않습니다. 따라서 작업의 완료 순서가 예측 가능하며, 순서대로 실행됩니다. 비동기: 비동기 작업은 병렬로 실행되며, 작업이 완료되기를 기다리지 않고 다음 작업을 시작합니다. 이로 인해 작업의 완료 순서가 예측하기 어려우며, 비동기적 작업은 다른 작업과 병렬로 실행될 수 있습니다. 대기 시간: 동기: 동기 작업은 다른 작업이 완료될 때까지 대기해야 하므로, 실행 시간이 길어질 수 있습니다.. 2023. 10. 16. 이전 1 2 3 4 5 다음