joonbread의 등록된 링크

 joonbread로 등록된 네이버 블로그 포스트 수는 1205건입니다.

SQL 문제 27 - SQL Project Planning(HackerRank) [내부링크]

SQL 문제 27 - SQL Project Planning(HackerRank) SQL Project Planning 풀이 SELECT START_DATE, MIN(END_DATE) FROM ( SELECT START_DATE FROM PROJECTS WHERE START_DATE NOT IN ( SELECT END_DATE FROM PROJECTS)) A, ( SELECT END_DATE FROM PROJECTS WHERE END_DATE NOT IN ( SELECT START_DATE FROM PROJECTS)) B WHERE A.START_DATE < B.END_DATE GROUP BY A.START_DATE ORDER BY (MIN(B.END_DATE) - A.START_DATE), A.START_DATE; - 시작날짜, 종료날짜가 연속된 날짜일 경우 해당 TASK_ID는 같은 프로젝트인데, 프로젝트 완료 시 걸렸던 일수를 기준을 알기 위해 연속된 날짜를 조인 조건으로 테이블

SQL 문제 28 - Symmetric Pairs(HackerRank) [내부링크]

SQL 문제 27 - Symmetric Pairs(HackerRank) - 조건은 다음과 같다. 1. 비교대상 1의 x와 대상 2의 y가 같고 대상1의 y와 대상 2의 x값이 같아야한다. 2. 1에서 만약 둘중 하나만 같을 경우 성립되지 않는다. 3. x <= y인 케이스만 오름차순으로 출력한다. Symmetric Pairs SELECT A.X, A.Y FROM FUNCTIONS A RIGHT OUTER JOIN FUNCTIONS B ON A.X = B.Y AND A.Y = B.X GROUP BY A.X, A.Y HAVING COUNT(A.X) > 1 OR A.X < A.Y ORDER BY A.X; - 조건 2가 맞을 경우 해당 연결된 비교대상을 SELECT 시 그룹화를 하면 X를 기준으로 순차적으로 나온다.(X값 기준, 오름차순으로 여러 Y값 출력) - 위의 SELECT 결과에서 조건 3에 맞춰 X <= Y 가 되도록 HAVING에 조건 주기 * 출처 Symmetric Pairs

SQL 문제 29 - Revising Aggregations - The Sum Function(HackerRank) [내부링크]

SQL 문제 29 - Revising Aggregations - The Sum Function(HackerRank) Revising Aggregations - The Sum Function 풀이 SELECT SUM(POPULATION) FROM CITY WHERE DISTRICT = 'California'; - 'California' 구역의 POPULATION 총 값을 구하는 문제 * 출처 Revising Aggregations - The Sum Function | HackerRank Query the total population of all cities for in the District of California. www.hackerrank.com

SQL 문제 30 - Revising Aggregations - The Count Function(HackerRank) [내부링크]

SQL 문제 30 - Revising Aggregations - The Count Function(HackerRank) Revising Aggregations - The Count Function 풀이 SELECT COUNT(1) FROM CITY WHERE POPULATION > 100000; * 출처 Revising Aggregations - The Count Function | HackerRank Query the number of cities having populations larger than 100000. www.hackerrank.com

SQL 문제 31 - Revising Aggregations - Averages(HackerRank) [내부링크]

SQL 문제 31 - Revising Aggregations - Averages(HackerRank) Revising Aggregations - Averages 풀이 SELECT AVG(POPULATION) FROM CITY WHERE DISTRICT = 'California'; * 출처 Revising Aggregations - Averages | HackerRank Query the average population of all cities in the District of California. www.hackerrank.com

SQL 문제 32 - Average Population(HackerRank) [내부링크]

SQL 문제 32 - Average Population(HackerRank) Average Population 풀이 SELECT FLOOR(AVG(POPULATION)) FROM CITY; * 출처 Average Population | HackerRank Query the average population of all cities, rounded down to the nearest integer. www.hackerrank.com

SQL 문제 33 - Japan Population(HackerRank) [내부링크]

SQL 문제 33 - Japan Population(HackerRank) Japan Population 풀이 SELECT SUM(POPULATION) FROM CITY WHERE COUNTRYCODE = 'JPN'; * 출처 Japan Population | HackerRank Query to the sum of the populations of all Japanese cities in CITY. www.hackerrank.com

SQL 문제 34 - Population Density Difference(HackerRank) [내부링크]

SQL 문제 34 - Population Density Difference(HackerRank) Population Density Difference 풀이 SELECT MAX(POPULATION) - MIN(POPULATION) FROM CITY; * 출처 Population Density Difference | HackerRank Query the difference between the maximum and minimum city populations in CITY. www.hackerrank.com

SQL 문제 35 - The Blunder(HackerRank) [내부링크]

SQL 문제 35 - The Blunder(HackerRank) The Blunder 풀이 SELECT CEIL(AVG(SALARY) - AVG(REPLACE(SALARY,0,''))) FROM EMPLOYEES; - 문제 내용이 실제 값 평균과 값들에서 0을 빼고 난 값들의 평균을 뺀 값을 출력하라는데, 소수점 이하는 출력 하지말라고 해서 CEIL함수를 사용했다. * 출처 The Blunder | HackerRank Query the amount of error in Sam's result, rounded up to the next integer. www.hackerrank.com

SQL 문제 36 - Top Earners(HackerRank) [내부링크]

SQL 문제 36 - Top Earners(HackerRank) Top Earners 풀이 -- ORACLE SELECT T.* FROM ( SELECT (MONTHS * SALARY) || ' ' || COUNT(MONTHS * SALARY) FROM EMPLOYEE GROUP BY MONTHS * SALARY ORDER BY MONTHS * SALARY DESC )T WHERE ROWNUM = 1; -- MYSQL SELECT CONCAT(T.MAX_NUM,' ',T.CNT) FROM ( SELECT (MONTHS * SALARY) AS MAX_NUM , COUNT(MONTHS * SALARY) AS CNT FROM EMPLOYEE GROUP BY MAX_NUM ORDER BY MAX_NUM DESC limit 1 ) T; - months와 salary 컬럼 곱할 때 최대값과 해당하는 사람들 수를 공백을 기준으로 출력하는 문제이다. - 곱한값을 기준으로 group by로 사람 수

SQL 문제 7 - Weather Observation Station 2(HackerRank) [내부링크]

SQL 문제 7 - Weather Observation Station 2(HackerRank) Weather Observation Station 2 풀이 -- ORACLE SELECT ROUND(SUM(LAT_N),2) || ' ' || ROUND(SUM(LONG_W),2) FROM STATION -- MYSQL SELECT CONCAT(ROUND(SUM(LAT_N),2),' ',ROUND(SUM(LONG_W),2)) FROM STATION * 출처 Top Earners | HackerRank Find the maximum amount of money earned by any employee, as well as the number of top earners (people who have earned this amount). www.hackerrank.com

SQL 문제 37 - Weather Observation Station 13(HackerRank) [내부링크]

SQL 문제 37 - Weather Observation Station 13(HackerRank) Weather Observation Station 13 풀이 -- ORACLE SELECT ROUND(SUM(LAT_N),4) FROM STATION WHERE LAT_N BETWEEN 38.7880 AND 137.2345; -- MYSQL SELECT TRUNCATE(SUM(LAT_N),4) FROM STATION WHERE LAT_N < 38.7880 AND LAT_N > 137.2345; * 출처 Weather Observation Station 13 | HackerRank Query the sum of Northern Latitudes having values greater than 38.7880 and less than 137.2345, truncated to 4 decimal places. www.hackerrank.com

SQL 문제 37 - Weather Observation Station 14(HackerRank) [내부링크]

SQL 문제 37 - Weather Observation Station 14(HackerRank) Weather Observation Station 14 풀이 SELECT ROUND(MAX(LAT_N),4) FROM STATION WHERE LAT_N < 137.2345; * 출처 Weather Observation Station 14 | HackerRank Query the greatest value of the Northern Latitudes from STATION that are under 137.2345 and truncated to 4 decimal places. www.hackerrank.com

SQL 문제 40 - Weather Observation Station 17(HackerRank) [내부링크]

SQL 문제 40 - Weather Observation Station 17(HackerRank) Weather Observation Station 17 풀이 SELECT ROUND(LONG_W,4) FROM STATION WHERE LAT_N = (SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780); * 출처 Weather Observation Station 17 | HackerRank Query the Western Longitude for the smallest value of the Northern Latitudes greater than 38.7780 in STATION and round to 4 decimal places. www.hackerrank.com

SQL 문제 41 - Weather Observation Station 18(HackerRank) [내부링크]

SQL 문제 41 - Weather Observation Station 18(HackerRank) Weather Observation Station 18 풀이 SELECT ROUND( ABS(MIN(LAT_N)-MAX(LAT_N)) + ABS(MIN(LONG_W)-MAX(LONG_W)) ,4) FROM STATION; * 출처 Weather Observation Station 18 | HackerRank Query the Manhattan Distance between two points, round or truncate to 4 decimal digits. www.hackerrank.com

SQL 문제 42 - Weather Observation Station 19(HackerRank) [내부링크]

SQL 문제 42 - Weather Observation Station 19(HackerRank) Weather Observation Station 19 풀이 SELECT ROUND( SQRT( POWER(MAX(LAT_N) - MIN(LAT_N), 2) + POWER(MAX(LONG_W) - MIN(LONG_W), 2) ) , 4) FROM STATION; - 유클리드 호제법에 맞춰서 푸는 문제이다. * 출처 유클리드 호제법 - 위키백과, 우리 모두의 백과사전 1월 29일부터 2월 26일까지 동유럽 에디터톤 이 진행됩니다. 2월 4일부터 38일 동안 2022 베이징 동계 올림픽 에디터톤 이 진행됩니다. 위키컨퍼런스 서울 2022 기획을 위한 커뮤니티 참여 설문 조사 에 참여해 주세요. 사용자:Takuyakoz 에 대한 관리자 선거 가 2022년 2월 28일 (월) 20:20 (KST)까지 진행됩니다. 58개 언어 접힘 유클리드 호제법 위키백과, 우리 모두의 백과사전. 유클리드 호제

SQL 문제 43 - Weather Observation Station 20(HackerRank) [내부링크]

SQL 문제 43 - Weather Observation Station 20(HackerRank) Weather Observation Station 20 풀이 SELECT ROUND(S1.LAT_N,4) AS MEDIAN FROM STATION S1 WHERE (SELECT COUNT(LAT_N) FROM STATION WHERE LAT_N < S1.LAT_N) = (SELECT COUNT(LAT_N) FROM STATION WHERE LAT_N > S1.LAT_N); - 중간부분을 찾아서 푸는 문제이다. * 출처 Top Earners | HackerRank Find the maximum amount of money earned by any employee, as well as the number of top earners (people who have earned this amount). www.hackerrank.com

SQL 문제 44 - Population Census(HackerRank) [내부링크]

SQL 문제 44 - Population Census(HackerRank) Population Census 풀이 SELECT SUM(C1.POPULATION) FROM CITY C1 INNER JOIN COUNTRY C2 ON C1.COUNTRYCODE = C2.CODE WHERE C2.CONTINENT = 'Asia'; * 출처 Population Census | HackerRank Query the sum of the populations of all cities on the continent 'Asia'. www.hackerrank.com

SQL 문제 45 - African Cities(HackerRank) [내부링크]

SQL 문제 45 - African Cities(HackerRank) African Cities 풀이 SELECT C1.NAME FROM CITY C1 LEFT OUTER JOIN COUNTRY C2 ON C1.COUNTRYCODE = C2.CODE WHERE C2.CONTINENT = 'Africa'; * 출처 African Cities | HackerRank Query the names of all cities on the continent 'Africa'. www.hackerrank.com

SQL 문제 14 - Employees With Missing Information LeetCode 1965 [내부링크]

SQL 문제 14 - Employees With Missing Information LeetCode 1965 Employees With Missing Information 풀이 -- ORACLE SELECT NVL(E.EMPLOYEE_ID, S.EMPLOYEE_ID) AS EMPLOYEE_ID FROM EMPLOYEES E FULL OUTER JOIN SALARIES S ON E.EMPLOYEE_ID = S.EMPLOYEE_ID WHERE SALARY IS NULL OR NAME IS NULL ORDER BY EMPLOYEE_ID; -- MYSQL SELECT EMPLOYEE_ID FROM( SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE EMPLOYEE_ID NOT IN (SELECT EMPLOYEE_ID FROM SALARIES) UNION SELECT EMPLOYEE_ID FROM SALARIES WHERE EMPLOYEE_ID NOT IN (SELECT

SQL 문제 15 - Rearrange Products Table LeetCode 1795 [내부링크]

SQL 문제 15 - Rearrange Products Table LeetCode 1795 Rearrange Products Table 풀이 -- ORACLE SELECT * FROM PRODUCTS UNPIVOT ( PRICE FOR STORE IN ( STORE1 AS 'store1', STORE2 AS 'store2', STORE3 AS 'store3') ); -- MYSQL SELECT T.* FROM ( SELECT PRODUCT_ID , 'store1' as store , STORE1 AS PRICE FROM PRODUCTS WHERE STORE1 IS NOT NULL UNION ALL SELECT PRODUCT_ID , 'store2' as store , STORE2 AS PRICE FROM PRODUCTS WHERE STORE2 IS NOT NULL UNION ALL SELECT PRODUCT_ID , 'store3' as store , STORE3 AS PRICE F

SQL 문제 16 - Tree Node LeetCode 608 [내부링크]

SQL 문제 16 - Tree Node LeetCode 608 Tree Node 풀이 SELECT ID , CASE WHEN P_ID IS NULL THEN 'Root' WHEN ID NOT IN (SELECT P_ID FROM TREE WHERE P_ID IS NOT NULL) THEN 'Leaf' ELSE 'Inner' END AS TYPE FROM TREE; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 17 - Second Highest Salary LeetCode 176 [내부링크]

SQL 문제 17 - Second Highest Salary LeetCode 176 Second Highest Salary 풀이 SELECT MAX(SALARY) SECONDHIGHESTSALARY FROM EMPLOYEE WHERE SALARY != ( SELECT MAX(SALARY) FROM EMPLOYEE ); * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 18 - Customer Who Visited but Did Not Make Any Transactions LeetCode 1581 [내부링크]

SQL 문제 18 - Customer Who Visited but Did Not Make Any Transactions LeetCode 1581 Customer Who Visited but Did Not Make Any Transactions 풀이 SELECT CUSTOMER_ID , COUNT(VISIT_ID) COUNT_NO_TRANS FROM VISITS WHERE VISIT_ID NOT IN (SELECT VISIT_ID FROM TRANSACTIONS) GROUP BY CUSTOMER_ID; - transaction_id가 없을 경우, 2번 이상 방문했을 경우이므로, Visits 테이블에서 Transactions 테이블의 visit_id를 제외한 나머지를 카운트 하면 된다. * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get

SQL 문제 19 - Article Views I LeetCode 1148 [내부링크]

SQL 문제 19 - Article Views I LeetCode 1148 Article Views I 풀이 SELECT DISTINCT(AUTHOR_ID) AS ID FROM VIEWS WHERE AUTHOR_ID = VIEWER_ID ORDER BY ID; - 문제에서 author_id 와 view_id는 동일 인물이라고한다. 그리고 문제 출력값도 동일인물을 출력하는 것을 보고 해당 풀이를 작성했다. * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 20 - Rising Temperature LeetCode 608 [내부링크]

SQL 문제 20 - Rising Temperature LeetCode 608 Rising Temperature 풀이 -- ORACLE SELECT T.ID FROM WEATHER T WHERE T.TEMPERATURE > (SELECT T2.TEMPERATURE FROM WEATHER T2 WHERE T2.RECORDDATE = T.RECORDDATE - 1 ) -- MYSQL SELECT T.ID FROM WEATHER T WHERE T.TEMPERATURE > (SELECT T2.TEMPERATURE FROM WEATHER T2 WHERE T2.RECORDDATE = DATE_SUB(T.RECORDDATE,INTERVAL 1 DAY) ) -- MSSQL SELECT T.ID FROM WEATHER T WHERE T.TEMPERATURE > (SELECT T2.TEMPERATURE FROM WEATHER T2 WHERE T2.RECORDDATE = DATEADD(DAY,-1,T.

SQL 문제 21 - Sales Person LeetCode 607 [내부링크]

SQL 문제 21 - Sales Person LeetCode 607 Sales Person 풀이 SELECT S.NAME FROM SALESPERSON S WHERE S.SALES_ID NOT IN ( SELECT O.SALES_ID FROM ORDERS O INNER JOIN COMPANY C ON O.COM_ID = C.COM_ID AND C.NAME = 'RED' ); * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 22 - User Activity for the Past 30 Days I LeetCode 1141 [내부링크]

SQL 문제 22 - User Activity for the Past 30 Days I LeetCode 1141 User Activity for the Past 30 Days I 풀이 -- ORACLE SELECT TO_CHAR(ACTIVITY_DATE,'YYYY-MM-DD') AS DAY , COUNT(DISTINCT USER_ID) AS ACTIVE_USERS FROM ACTIVITY WHERE ACTIVITY_DATE < '2019-07-27' AND TO_DATE('2019-07-27','YYYY-MM-DD') - ACTIVITY_DATE < 30 GROUP BY ACTIVITY_DATE -- MYSQL SELECT ACTIVITY_DATE AS DAY , COUNT(DISTINCT USER_ID) AS ACTIVE_USERS FROM ACTIVITY WHERE ACTIVITY_DATE < '2019-07-27' AND DATEDIFF('2019-07-27',ACTIVITY_

SQL 문제 23 - Daily Leads and Partners LeetCode 1693 [내부링크]

SQL 문제 23 - Daily Leads and Partners LeetCode 1693 Daily Leads and Partners 풀이 -- ORACLE SELECT TO_CHAR(DATE_ID,'YYYY-MM-DD') AS DATE_ID , MAKE_NAME , COUNT(DISTINCT LEAD_ID) AS UNIQUE_LEADS , COUNT(DISTINCT PARTNER_ID) AS UNIQUE_PARTNERS FROM DAILYSALES GROUP BY DATE_ID, MAKE_NAME; -- MYSQL, MSSQL SELECT DATE_ID , MAKE_NAME , COUNT(DISTINCT LEAD_ID) AS UNIQUE_LEADS , COUNT(DISTINCT PARTNER_ID) AS UNIQUE_PARTNERS FROM DAILYSALES GROUP BY DATE_ID, MAKE_NAME; * 출처 Level up your coding skills and q

SQL 문제 24 - Find Followers Count LeetCode 1729 [내부링크]

SQL 문제 24 - Find Followers Count LeetCode 1729 Find Followers Count 풀이 SELECT USER_ID , COUNT(FOLLOWER_ID ) AS FOLLOWERS_COUNT FROM FOLLOWERS GROUP BY USER_ID ORDER BY USER_ID ASC; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 25 - Customer Placing the Largest Number of Orders LeetCode 586 [내부링크]

SQL 문제 25 - Customer Placing the Largest Number of Orders LeetCode 586 Customer Placing the Largest Number of Orders 풀이 -- ORACLE SELECT T.CUSTOMER_NUMBER FROM ( SELECT CUSTOMER_NUMBER FROM ORDERS GROUP BY CUSTOMER_NUMBER ORDER BY COUNT(1) DESC ) T WHERE ROWNUM = 1; -- MYSQL SELECT CUSTOMER_NUMBER FROM ORDERS GROUP BY CUSTOMER_NUMBER ORDER BY COUNT(1) DESC LIMIT 1; -- MSSQL SELECT TOP 1 CUSTOMER_NUMBER FROM ORDERS GROUP BY CUSTOMER_NUMBER ORDER BY COUNT(1) DESC; * 출처 Level up your coding skills

SQL 문제 26 - Game Play Analysis I LeetCode 511 [내부링크]

SQL 문제 26 - Game Play Analysis I LeetCode 511 Game Play Analysis I 풀이 -- ORACLE SELECT PLAYER_ID , TO_CHAR(MIN(EVENT_DATE),'YYYY-MM-DD') AS FIRST_LOGIN FROM ACTIVITY GROUP BY PLAYER_ID; -- MYSQL SELECT PLAYER_ID , MIN(EVENT_DATE) AS FIRST_LOGIN FROM ACTIVITY GROUP BY PLAYER_ID; -- MSSQL SELECT PLAYER_ID , CONVERT(CHAR(10),MIN(EVENT_DATE),120) AS FIRST_LOGIN FROM ACTIVITY GROUP BY PLAYER_ID; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge a

Python HackerRank 문제 28 - Introduction to Sets [내부링크]

Python HackerRank 문제 28 - Introduction to Sets Introduction to Sets 풀이 def average(array): return float ( sum ( set ( array )) / len ( set ( array ))) if __name__ == '__main__': n = int(input()) arr = list(map(int, input().split())) result = average(arr) print(result) * 출처 Introduction to Sets | HackerRank Use the set tool to compute the average. www.hackerrank.com

Python HackerRank 문제 29 - DefaultDict Tutorial [내부링크]

Python HackerRank 문제 29 - DefaultDict Tutorial DefaultDict Tutorial 풀이 from collections import defaultdict n, m = map(int, input().split()) d = defaultdict(list) for i in range(1,n+1): d[input()].append(i) for i in range(m): print(*d.get(input(),[-1])) * 출처 DefaultDict Tutorial | HackerRank Create dictionary value fields with predefined data types. www.hackerrank.com

Python HackerRank 문제 30 - Calendar Module [내부링크]

Python HackerRank 문제 30 - Calendar Module Calendar Module 풀이 import datetime print(datetime.datetime.strptime(input(), '%m %d %Y').strftime('%A').upper()) * 출처 Calendar Module | HackerRank Print the day of a given date. www.hackerrank.com

Python HackerRank 문제 31 - Exceptions [내부링크]

Python HackerRank 문제 31 - Exceptions Exceptions 풀이 for T in range(int(input())): try: a,b = map(int,input().split()) res = a // b print(res) except ZeroDivisionError as e: print("Error Code:", e) except ValueError as e: print("Error Code:", e) * 출처 Exceptions | HackerRank Handle errors detected during execution. www.hackerrank.com

Python HackerRank 문제 32 - Collections.namedtuple() [내부링크]

Python HackerRank 문제 32 - Collections.namedtuple() Collections.namedtuple() 풀이 n = int(input()) mark = input().split().index('MARKS') print('{:.2f}'.format(sum([ int(input().split()[mark]) for x in range(n) ]) / n)) * 출처 Collections.namedtuple() | HackerRank You need to turn tuples into convenient containers using collections.namedtuple(). www.hackerrank.com

JavaScript_연습문제_약수의 합_school_programmers [내부링크]

JavaScript_연습문제_약수의 합_school_programmers 풀이 function solution(n) { // 배열 생성, 약수 구한 다음 모두 더하기 return Array.from({length:n} ,(_,i) => 1 + i).filter(v => n % v == 0).reduce((a,b) => a+= b,0); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12928 코딩테스트 연습 - 약수의 합 문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n 은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다. 입출력 예 #2 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다. so

JavaScript_연습문제_자릿수 더하기_school_programmers [내부링크]

JavaScript_연습문제_자릿수 더하기_school_programmers 풀이 function solution(n){ // split으로 나눈 뒤 해당 값들 모두 더하기 return (n + "").split("").reduce((a,b) => a += Number(b),0); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12931 코딩테스트 연습 - 자릿수 더하기 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예 N answer 123 6 987 24 입출력 예 설명 입출력 예 #1 문제의 예시와 같습니다. 입출력 예 #2 9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

JavaScript_연습문제_자연수 뒤집어 배열로 만들기_school_programmers [내부링크]

JavaScript_연습문제_자연수 뒤집어 배열로 만들기_school_programmers 풀이 function solution(n) { // 나누고 뒤집고 숫자화하기 return (n + "").split("").reverse().map(v => Number(v)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12932 코딩테스트 연습 - 자연수 뒤집어 배열로 만들기 문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345 [5,4,3,2,1] school.programmers.co.kr

JavaScript_연습문제_문자열을 정수로 바꾸기_school_programmers [내부링크]

JavaScript__school_programmers 풀이 function solution(s) { // Number를 이용한 풀이 return Number(s); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12925 코딩테스트 연습 - 문자열을 정수로 바꾸기 문제 설명 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 입출력 예 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다. solution.c 실행 결과 실행 결과가 여기에 표시됩니다. school.programme

JavaScript_연습문제_문자열 내 p와 y의 개수_school_programmers [내부링크]

JavaScript_연습문제_문자열 내 p와 y의 개수_school_programmers 풀이 function solution(s){ // 모든 문자를 대문자로 변환 후 길이 비교하기 s = [...s.toUpperCase()]; return s.filter(v => v == "P").length == s.filter(v => v == "Y").length; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12916 코딩테스트 연습 - 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를

JavaScript_연습문제_정수 제곱근 판별_school_programmers [내부링크]

JavaScript_연습문제_정수 제곱근 판별_school_programmers 풀이 function solution(n) { // 제곱근을 판별하는 함수와 제곱 함수를 사용한 풀이법 return Math.sqrt(n) % 1 == 0 ? Math.pow(Math.sqrt(n)+1,2) : -1 ; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12934 코딩테스트 연습 - 정수 제곱근 판별 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 n return 121 144 3 -1 입출력 예 설명 입출력 예#1 121은 양의 정수 11의 제곱이므로,

Python HackerRank 문제 33 - Collections.OrderedDict() [내부링크]

Python HackerRank 문제 33 - Collections.OrderedDict() Collections.OrderedDict() 풀이 from collections import OrderedDict order = OrderedDict() cnt = int(input()) for _ in range (cnt): item, space, price = input().rpartition(' ') if item in order.keys(): order[item] += int(price) else: order[item] = int(price) for i,j in order.items(): print(i , j) * 출처 Collections.OrderedDict() | HackerRank Print a dictionary of items that retains its order. www.hackerrank.com

Python HackerRank 문제 34 - Polar Coordinates [내부링크]

Python HackerRank 문제 34 - Polar Coordinates Polar Coordinates 풀이 import cmath num = complex(input()) print(abs(num)) print(cmath.phase(num)) * 출처 Polar Coordinates | HackerRank Convert complex numbers to polar coordinates www.hackerrank.com

Python HackerRank 문제 35 - Symmetric Difference [내부링크]

Python HackerRank 문제 35 - Symmetric Difference Symmetric Difference 풀이 a_size = int(input()) a = set(map(int, input().split())) b_size = int(input()) b = set(map(int, input().split())) c = a.difference(b) d = b.difference(a) c.update(d) print("\n".join(map(str, sorted(c)))) * 출처 Symmetric Difference | HackerRank Learn about sets as a data type. www.hackerrank.com

Python HackerRank 문제 36 - itertools.combinations() [내부링크]

Python HackerRank 문제 36 - itertools.combinations() itertools.combinations() 풀이 from itertools import combinations S, k = input().split() S = sorted(S) k = int(k) for i in range(1,k+1): for j in combinations(S,i): print(''.join(j)) * 출처 itertools.combinations() | HackerRank Print all the combinations of a string using itertools. www.hackerrank.com

Python HackerRank 문제 37 - Incorrect Regex [내부링크]

Python HackerRank 문제 37 - Incorrect Regex Incorrect Regex 풀이 import re for i in range(int(input())): try: re.compile(input()) print(True) except re.error: print(False) * 출처 Incorrect Regex | HackerRank Check whether the regex is valid or not. www.hackerrank.com

Python HackerRank 문제 38 - Set .add() [내부링크]

Python HackerRank 문제 38 - Set .add() Set .add() 풀이 N = int(input()) stamps = set(input() for _ in range(N)) print(len(stamps)) * 출처 Set .add() | HackerRank Add elements to set. www.hackerrank.com

Python HackerRank 문제 39 - itertools.combinations_with_replacement() [내부링크]

Python HackerRank 문제 39 - itertools.combinations_with_replacement() itertools.combinations_with_replacement()풀이 from itertools import combinations_with_replacement s, k = input().split() S, N = sorted(s), int(k) [print(''.join(_)) for _ in combinations_with_replacement(S,N)] * 출처 itertools.combinations_with_replacement() | HackerRank Find all the combinations of a string with replacements. www.hackerrank.com

Python HackerRank 문제 40 - Set .discard(), .remove() & .pop() [내부링크]

Python HackerRank 문제 40 - Set .discard(), .remove() & .pop() Set .discard(), .remove() & .pop() 풀이 n = int(input()) s = set(map(int, input().split())) N = int(input()) for i in range(N): str = input() if str.upper() == "POP": s.pop() else: str = str.split() ch = str[0] se = int(str[1]) if ch.upper() == "REMOVE": s.remove(se) elif ch.upper() == "DISCARD": s.discard(se) print(sum(s)) * 출처 Set .discard(), .remove() & .pop() | HackerRank Different ways to omit set elements. www.hackerrank.com

Python HackerRank 문제 41 - Collections.deque() [내부링크]

Python HackerRank 문제 41 - Collections.deque() 풀이 from collections import deque d = deque() for i in range(int(input())): exec('d.{0}({1})'.format(*input().split()+[''])) print(*d) * 출처 Collections.deque() | HackerRank Perform multiple operations on a double-ended queue or deque. www.hackerrank.com

JavaScript_코딩테스트 입문_외계행성의 나이_school_programmers [내부링크]

JavaScript_코딩테스트 입문_외계행성의 나이_school_programmers 풀이 function solution(age) { // abcdefghij -> 0 ~ 9의 값 // 아스키코드를 이용하여 값을 비교한다. return (age + "").split('').map((v) => String.fromCharCode(97+Number(v))).join(''); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120834 코딩테스트 연습 - 외계행성의 나이 우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age 가 매개변수로 주어질

JavaScript_코딩테스트 입문_배열 회전시키기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_배열 회전시키기_school_programmers 풀이 function solution(numbers, direction) { // splice를 이용하기 위해 numbers 배열을 복사한다. const right_numbers = numbers.slice(0); const left_numbers = numbers.slice(0); // direction값에 맞춰서 출력한다. return direction == "right" ? [numbers[numbers.length-1]].concat(right_numbers.splice(0,right_numbers.length-1)) : left_numbers.splice(1,numbers.length).concat([numbers[0]]); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120844 코딩테스트 연습 - 배열 회전시키기 정

JavaScript_코딩 기초 트레이닝_ad 제거하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_ad 제거하기_school_programmers 풀이 function solution(strArr) { // "ad"를 포함하지 않는 문자열을 필터링한다. return strArr.filter(v => v.indexOf("ad") == -1); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181870 코딩테스트 연습 - ad 제거하기 문자열 배열 strArr 가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ strArr 의 길이 ≤ 1,000 1 ≤ strArr 의 원소의 길이 ≤ 20 strArr 의 원소는 알파벳 소문자로 이루어진 문자열입니다. 입출력 예 strArr result ["and","notad","a

JavaScript_코딩 기초 트레이닝_간단한 식 계산하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_간단한 식 계산하기_school_programmers 풀이 function solution(binomial) { // eval()을 쓰는 방법대신 new Funtion()을 사용한 풀이법이다. return new Function(`return ${binomial}`)(); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181865 코딩테스트 연습 - 간단한 식 계산하기 문자열 binomial 이 매개변수로 주어집니다. binomial 은 " a op b " 형태의 이항식이고 a 와 b 는 음이 아닌 정수, op 는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요. 제한사항 0 ≤ a , b ≤ 40,000 0을 제외하고 a , b 는 0으로 시작하지 않습니다. 입출력 예 binomial result "

JavaScript_코딩테스트 입문_피자 나눠 먹기 2_school_programmers [내부링크]

JavaScript_코딩테스트 입문_피자 나눠 먹기 2_school_programmers 풀이 function solution(n) { // while를 이용한 방법이다. var num = 1; while (num * 6 % n) { num++; } return num; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120815 코딩테스트 연습 - 피자 나눠 먹기 (2) 머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n 이 매개변수로 주어질 때, n 명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. 제한사항 1 ≤ n ≤ 100 입출력 예 n result 6 1 10 5 4 2 입출력 예 설명 입출력 예 #1 6명이 모두 같은 양을 먹기 위해 한 판을 시켜야 피자가 6

JavaScript_코딩 기초 트레이닝_배열 만들기 3_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_배열 만들기 3_school_programmers 풀이 function solution(arr, intervals) { // 구조분해 할당을 이용한 풀이법 const [[a,b], [c,d]] = intervals; return [...arr.slice(a, b + 1), ...arr.slice(c, d + 1)] } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181895 코딩테스트 연습 - 배열 만들기 3 정수 배열 arr 와 2개의 구간이 담긴 배열 intervals 가 주어집니다. intervals 는 항상 [[a1, b1], [a2, b2]] 의 꼴로 주어지며 각 구간은 닫힌 구간입니다. 닫힌 구간은 양 끝값과 그 사이의 값을 모두 포함하는 구간을 의미합니다. 이때 배열 arr 의 첫 번째 구간에 해당하는 배열과 두 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열

JavaScript_연습문제_평균 구하기_school_programmers [내부링크]

JavaScript_연습문제_평균 구하기_school_programmers 풀이 function solution(arr) { // 합계를 구한다음 길이만큼 나눈다. return arr.reduce((a,b) => a += b,0) / arr.length; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12944 코딩테스트 연습 - 평균 구하기 문제 설명 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr return [1,2,3,4] 2.5 [5,5] 5 solution.c 실행 결과 실행 결과가 여기에 표시됩니다. school.programmers.co.kr

JavaScript_연습문제_짝수와 홀수_school_programmers [내부링크]

JavaScript_연습문제_짝수와 홀수_school_programmers 풀이 function solution(num) { // 나머지값으로 분별하기 return num % 2 == 0 ? "Even" : "Odd"; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12937 코딩테스트 연습 - 짝수와 홀수 문제 설명 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even" school.programmers.co.kr

JavaScript_월간 코드 챌린지 시즌3_나머지가 1이 되는 수 찾기_school_programmers [내부링크]

JavaScript_월간 코드 챌린지 시즌3_나머지가 1이 되는 수 찾기_school_programmers 풀이 function solution(n) { // 배열화한뒤 나머지 1을 출력하는 몫을 찾아 첫번째 값을 반환한다. return Array.from({ length: n}, (_,i) => 2 + i).filter(v => n % v == 1)[0]; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/87389 코딩테스트 연습 - 나머지가 1이 되는 수 찾기 자연수 n 이 매개변수로 주어집니다. n 을 x 로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x 를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 3 ≤ n ≤ 1,000,000 입출력 예 n result 10 3 12 11 입출력 예 설명 입출력 예 #1 10을 3으로 나눈 나머지가 1

JavaScript_연습문제_x만큼 간격이 있는 n개의 숫자_school_programmers [내부링크]

JavaScript_연습문제_x만큼 간격이 있는 n개의 숫자_school_programmers 풀이 function solution(x, n) { // 배열을 이용한 풀이법 return Array.from({length:n}).fill(0).map((v,i) => v = x * (i+1)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12954 코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자 문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력 예 x n answer 2 5 [2,4,6,8,10] 4 3 [4,8,12]

Python HackerRank 문제 44 - Set .difference() Operation [내부링크]

Python HackerRank 문제 44 - Set .difference() Operation Set .difference() Operation 풀이 n1 = int(input()) s1 = set(map(int,input().split())) n2 = int(input()) s2 = set(map(int,input().split())) print(len(s1-s2)) * 출처 Set .difference() Operation | HackerRank Use the .difference() operator to check the differences between sets. www.hackerrank.com

JavaScript_코딩 기초 트레이닝_가까운 1 찾기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_가까운 1 찾기_school_programmers 풀이 function solution(arr, idx) { /* 이게 왜 안되는지 모르겠음 arr.forEach(function(v,i){ if(v == 1 && i >= idx){ return i; } }); */ for(var i = 0; i < arr.length; i++){ if(arr[i] == 1 && i >= idx){ return i; } } return -1; } forEach와 for문의 차이가 없는 로직인데 for문은 먹히고 forEach는 안된다?? console.log로 찍어봤더니 결과는 동일한데.. 이유를 모르겠다. * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181898 코딩테스트 연습 - 가까운 1 찾기 정수 배열 arr 가 주어집니다. 이때 arr 의 원소는 1 또는 0입니다. 정수 idx 가 주어

JavaScript_코딩 기초 트레이닝_x 사이의 개수_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_x 사이의 개수_school_programmers 풀이 function solution(myString) { // "x"로 나눈 배열 문자열 값을 길이로 변환 return myString.split("x").map(v=>v.length); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181867 코딩테스트 연습 - x 사이의 개수 문자열 myString 이 주어집니다. myString 을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ myString 의 길이 ≤ 100,000 myString 은 알파벳 소문자로 이루어진 문자열입니다. 입출력 예 myString result "oxooxoxxox" [1, 2, 1, 0, 1, 0] "xabcxdefxghi" [0,

Python HackerRank 문제 45 - Mod Divmod [내부링크]

Python HackerRank 문제 45 - Mod Divmod Mod Divmod 풀이 a, b = int(input()), int(input()) div, div2 = divmod(a, b) print(div) print(div2) print((div, div2)) * 출처 Mod Divmod | HackerRank Get the quotient and remainder using the divmod operator in Python. www.hackerrank.com

Python HackerRank 문제 46 - Integers Come In All Sizes [내부링크]

Python HackerRank 문제 46 - Integers Come In All Sizes 풀이 a,b,c,d=[int(input()) for i in range(4)] print(pow(a,b)+pow(c,d)) * 출처 Integers Come In All Sizes | HackerRank Exercises with big integers in Python. www.hackerrank.com

Python HackerRank 문제 47 - Power - Mod Power [내부링크]

Python HackerRank 문제 47 - Power - Mod Power Power - Mod Power 풀이 a = int(input()) b = int(input()) m = int(input()) print(pow(a,b)) print(pow(a,b,m)) * 출처 Power - Mod Power | HackerRank Perform modular exponentiation in Python. www.hackerrank.com

Python HackerRank 문제 48 - Set .symmetric_difference() Operation [내부링크]

Python HackerRank 문제 48 - Set .symmetric_difference() Operation Set .symmetric_difference() Operation 풀이 n1 = input() s1 = set(map(int,input().split())) n2 = input() s2 = set(map(int,input().split())) print(len(s1 ^ s2)) * 출처 Set .symmetric_difference() Operation | HackerRank Making symmetric difference of sets. www.hackerrank.com

Python HackerRank 문제 49 - Set Mutations [내부링크]

Python HackerRank 문제 49 - Set Mutations Set Mutations 풀이 a = input() s1 = set(map(int,input().split())) for i in range(int(input())): x = input().split() s2 = set(map(int,input().split())) if x[0]=="intersection_update": s1.intersection_update(s2) elif x[0]=="update": s1.update(s2) elif x[0]=="symmetric_difference_update": s1.symmetric_difference_update(s2) elif x[0]=="difference_update": s1.difference_update(s2) print(sum(s1)) * 출처 Set Mutations | HackerRank Using various operations, change the

Python HackerRank 문제 50 - The Captain's Room [내부링크]

Python HackerRank 문제 50 - The Captain's Room The Captain's Room 풀이 from collections import Counter c = Counter() k, room_list = int(input()), input().split() data_num = Counter(room_list) for i in data_num: if data_num[i] == 1: print(i) * 출처 The Captain's Room | HackerRank Out of a list of room numbers, determine the number of the captain's room. www.hackerrank.com

Python HackerRank 문제 51 - Check Subset [내부링크]

Python HackerRank 문제 51 - Check Subset Check Subset 풀이 for i in range(int(input())): a = input() s1 = set(map(int,input().split())) b = input() s2 = set(map(int,input().split())) print(s1.issubset(s2)) * 출처 Check Subset | HackerRank Verify if set A is a subset of set B. www.hackerrank.com

Python HackerRank 문제 52 - Check Strict Superset [내부링크]

Python HackerRank 문제 52 - Check Strict Superset Check Strict Superset 풀이 s1 = set(map(int,input().split())) for i in range(int(input())): s2 = set(map(int,input().split())) if s1.issuperset(s2): if len(s1)>len(s2): continue else: print(False) break else: print(True) * 출처 Check Strict Superset | HackerRank Check if A is a strict superset of the other given sets. www.hackerrank.com

Python HackerRank 문제 53 - Class 2 - Find the Torsional Angle [내부링크]

Python HackerRank 문제 53 - Class 2 - Find the Torsional Angle Find the Torsional Angle 풀이 import math class Points(object): def __init__(self, x, y, z): self.x=x self.y=y self.z=z def __sub__(self, no): return Points(no.x-self.x, no.y-self.y, no.z-self.z) def dot(self, no): return self.x*no.x+self.y*no.y+self.z*no.z def cross(self, no): return Points(self.y*no.z-self.z*no.y,self.z*no.x-self.x*no.z,self.x*no.y-self.y*no.x) def absolute(self): return pow((self.x ** 2 + self.y ** 2 + self.z ** 2), 0

JavaScript_코딩 기초 트레이닝_0 떼기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_0 떼기_school_programmers 풀이 function solution(n_str) { // 정규식을 이용하여 0으로 시작된 경우 왼쪽 0을 지운다. return n_str.replace(/(^0+)/, ""); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181847 코딩테스트 연습 - 0 떼기 정수로 이루어진 문자열 n_str 이 주어질 때, n_str 의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ n_str ≤ 10 n_str 이 "0"으로만 이루어진 경우는 없습니다. 입출력 예 n_str result "0010" "10" "854020" "854020" 입출력 예 설명 입출력 예 #1 "0010"의 가장 왼쪽에 연속으로 등장하는 "0"을 모두 제거하면 "10"이 됩니다. 입출력 예

JavaScript_코딩 기초 트레이닝_배열의 원소 삭제하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_배열의 원소 삭제하기_school_programmers 풀이 function solution(arr, delete_list) { // filter를 걸어서 포함되지 않는 요소만 배열화한다. return arr.filter((i) => !delete_list.includes(i)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181844 코딩테스트 연습 - 배열의 원소 삭제하기 정수 배열 arr 과 delete_list 가 있습니다. arr 의 원소 중 delete_list 의 원소를 모두 삭제하고 남은 원소들은 기존의 arr 에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ arr 의 길이 ≤ 100 1 ≤ arr 의 원소 ≤ 1,000 arr 의 원소는 모두 서로 다릅니다. 1 ≤ delete_list 의 길이 ≤ 1

JavaScript_코딩 기초 트레이닝_순서 바꾸기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_순서 바꾸기_school_programmers 풀이 function solution(num_list, n) { // splice를 이용하여 시작인덱스 ~ 끝 인덱스까지의 값을 추출한 다음 concat을 이용하여 배열요소를 붙인다. const list1 = num_list.splice(n,num_list.length); const list2 = num_list.splice(0,n); return list1.concat(list2); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181891 코딩테스트 연습 - 순서 바꾸기 정수 리스트 num_list 와 정수 n 이 주어질 때, num_list 를 n 번째 원소 이후의 원소들과 n 번째까지의 원소들로 나눠 n 번째 원소 이후의 원소들을 n 번째까지의 원소들 앞에 붙인 리스트를 return하도록 solution 함수를 완성해주세요

JavaScript_코딩테스트 입문_개미 군단_school_programmers [내부링크]

JavaScript_코딩테스트 입문_개미 군단_school_programmers 풀이 function solution(hp) { // 몫과 나머지를 이용한 풀이법이다. return Math.floor(hp / 5) + Math.floor( (hp % 5) / 3) + ((hp % 5) % 3); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120837 코딩테스트 연습 - 개미 군단 개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp 가 매개변수로 주어질 때, 사냥감의 체

JavaScript_코딩테스트 입문_가위 바위 보_school_programmers [내부링크]

JavaScript_코딩테스트 입문_가위 바위 보_school_programmers 풀이 function solution(rsp) { // 값을 비교 후 변경한다음 합친다. return [...rsp].map((v) => v = v == "2" ? "0" : v == "0" ? "5" : "2").join(""); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120839 코딩테스트 연습 - 가위 바위 보 가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp 가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요. 제한사항 0 < rsp 의 길이 ≤ 100 rsp 와 길이가 같은 문자열을 return 합니다. rsp 는 숫자 0, 2, 5로 이루어져 있습니다. 입출력 예

JavaScript_코딩 기초 트레이닝_할 일 목록_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_할 일 목록_school_programmers 풀이 function solution(todo_list, finished) { // 인덱스를 추출한 풀이법 return todo_list.filter((v,i) => !finished[i]); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181885 코딩테스트 연습 - 할 일 목록 오늘 해야 할 일이 담긴 문자열 배열 todo_list 와 각각의 일을 지금 마쳤는지를 나타내는 boolean 배열 finished 가 매개변수로 주어질 때, todo_list 에서 아직 마치지 못한 일들을 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ todo_list 의 길이 1 ≤ 100 2 ≤ todo_list 의 원소의 길이 ≤ 20 todo_list 의 원소는 영소문자로만 이루어져 있습

JavaScript_코딩테스트 입문_직각삼각형 출력하기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_직각삼각형 출력하기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = line.split(' '); }).on('close', function () { // 이중반복문을 이용한 풀이법 var str = ""; for(var i = 0; i < Number(input[0]); i++){ str = ""; for(var j = 0; j < i + 1; j++){ str += "*"; } console.log(str); } }); * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/12

JavaScript_코딩테스트 입문_최댓값 만들기 2_school_programmers [내부링크]

JavaScript_코딩테스트 입문_최댓값 만들기 2_school_programmers 풀이 function solution(numbers) { // 곱한 값을 배열에 넣는다. var answer = []; for(let i = 0; i < numbers.length - 1; i++){ for(let j = i + 1; j < numbers.length; j++){ answer.push(numbers[i] * numbers[j]); } } // 에러 방지용 return Math.max.apply(null, answer); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120862 코딩테스트 연습 - 최댓값 만들기 (2) 정수 배열 numbers 가 매개변수로 주어집니다. numbers 의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요. 제한사항 -10,000 ≤

JavaScript_코딩테스트 입문_문자열 정렬하기 1_school_programmers [내부링크]

JavaScript_코딩테스트 입문_문자열 정렬하기 1_school_programmers 풀이 function solution(my_string) { // 숫자가 아닌 경우 공백으로 치환한다음 해당 문자를 숫자로 바꿔서 정렬한다. return my_string.replace(/[^0-9]/gi,'').split('').map(Number).sort(); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120850 코딩테스트 연습 - 문자열 정렬하기 (1) 문자열 my_string 이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요. 제한사항 1 ≤ my_string 의 길이 ≤ 100 my_string 에는 숫자가 한 개 이상 포함되어 있습니다. my_string 은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습

JavaScript_코딩 기초 트레이닝_특별한 이차원 배열 2_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_특별한 이차원 배열 2_school_programmers 풀이 function solution(arr) { // 값 비교 시 일치하지 않는 경우 0, 모두 일치한 경우 1을 반환한다. for(var i = 0; i < arr.length; i++){ for(var j = 0; j < arr.length; j++){ if(arr[i][j] != arr[j][i]) return 0; } } return 1; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181831 코딩테스트 연습 - 특별한 이차원 배열 2 제한사항 1 ≤ arr 의 길이 = arr 의 원소의 길이 ≤ 100 1 ≤ arr 의 원소의 원소 ≤ 1,000 모든 arr 의 원소의 길이는 같습니다. 입출력 예 arr result [[5, 192, 33], [192, 72, 95], [33, 95, 999]] 1 [[1

JavaScript_코딩테스트 입문_주사위의 개수_school_programmers [내부링크]

JavaScript_코딩테스트 입문_주사위의 개수_school_programmers 풀이 function solution(box, n) { // 초기값 1을 설정한 다음 인덱스 0부터 시작하여 누적값을 구한다. return box.reduce((a, b) => a * Math.floor(b / n), 1); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120845 코딩테스트 연습 - 주사위의 개수 머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box 와 주사위 모서리의 길이 정수 n 이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 box 의 길이는 3입니다. box[0] = 상자의 가로 길이 box[1] =

Python HackerRank 문제 54 - Input() [내부링크]

Python HackerRank 문제 54 - Input() Input() 풀이 x, k = map(int, input().split()) print(eval(input()) == k) * 출처 Input() | HackerRank A Python 2 challenge: Input() is equivalent to eval(raw_input(prompt)). www.hackerrank.com

Python HackerRank 문제 55 - Zipped! [내부링크]

Python HackerRank 문제 55 - Zipped! Zipped! 풀이 N, X = map(int,input().split()) A = [] for i in range(X): A.append(list(map(float,input().split()))) for i in zip(*A): print(sum(i)/X) * 출처 Zipped! | HackerRank Compute the average by zipping data. www.hackerrank.com

Python HackerRank 문제 56 - Python Evaluation [내부링크]

Python HackerRank 문제 56 - Python Evaluation Python Evaluation 풀이 eval(input()) * 출처 Python Evaluation | HackerRank Evaluate the expressions in Python using the expression eval(). www.hackerrank.com

Python HackerRank 문제 57 - Any or All [내부링크]

Python HackerRank 문제 57 - Any or All Any or All 풀이 n = int(input()) b = list(map(int, input().split())) res = False for a in b: if a>=0 : if all([a<=10, a%2 != 0]): res = True elif int(str(a)[::-1]) == a: res = True else: res = False print(res) * 출처 Any or All | HackerRank Return True, if any of the iterable is true or if all of it is true using the any() and all() expressions. www.hackerrank.com

JAVA_Valid Palindrome_LeetCode 125 [내부링크]

JAVA_Valid Palindrome_LeetCode 125 Valid Palindrome 풀이 class Solution { public boolean isPalindrome(String s) { s = s.toLowerCase().replaceAll("[^a-z0-9]", ""); return s.equals(new StringBuffer(s).reverse().toString()); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Single Number_LeetCode 136 [내부링크]

JAVA_Single Number_LeetCode 136 Single Number 풀이 class Solution { public int singleNumber(int[] nums) { int uniqNum = 0; for (int idx : nums) { uniqNum ^= idx; } return uniqNum; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Linked List Cycle_LeetCode 141 [내부링크]

JAVA_Linked List Cycle_LeetCode 141 Linked List Cycle 풀이 public class Solution { public boolean hasCycle(ListNode head) { if(head == null || head.next == null) return false; ListNode fast = head, slow = head; while(fast.next != null && fast.next.next != null){ fast = fast.next.next; slow = slow.next; if(fast == slow) return true; } return false; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. l

JAVA_Binary Tree Preorder Traversal_LeetCode 144 [내부링크]

JAVA_Binary Tree Preorder Traversal_LeetCode 144 풀이 class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> pre = new LinkedList<Integer>(); if(root==null) return pre; Stack<TreeNode> stack = new Stack<TreeNode>(); stack.push(root); while(!stack.empty()) { TreeNode tree = stack.pop(); pre.add(tree.val); if(tree.right!=null) stack.push(tree.right); if(tree.left!=null) stack.push(tree.left); } return pre; } } * 출처 Level up your coding skills and quickly land a job. T

JAVA_Binary Tree Postorder Traversal_LeetCode 145 [내부링크]

JAVA_Binary Tree Postorder Traversal_LeetCode 145 풀이 class Solution { public List<Integer> postorderTraversal(TreeNode root) { LinkedList<Integer> ans = new LinkedList<>(); Stack<TreeNode> stack = new Stack<>(); if (root == null) return ans; stack.push(root); while (!stack.isEmpty()) { TreeNode tree = stack.pop(); ans.addFirst(tree.val); if (tree.left != null) stack.push(tree.left); if (tree.right != null) stack.push(tree.right); } return ans; } } * 출처 Level up your coding skills and quickly lan

JAVA_Intersection of Two Linked Lists_LeetCode 160 [내부링크]

JAVA_Intersection of Two Linked Lists_LeetCode 160 풀이 public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode nodeA = headA, nodeB = headB; while (nodeA != nodeB) { nodeA = nodeA == null ? headB : nodeA.next; nodeB = nodeB == null ? headA : nodeB.next; } return nodeA; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Excel Sheet Column Title_LeetCode 168 [내부링크]

JAVA_Excel Sheet Column Title_LeetCode 168 풀이 class Solution { public String convertToTitle(int columnNumber) { StringBuilder str = new StringBuilder(); while (columnNumber > 0) { int c = (columnNumber - 1) % 26; str.append((char) (c + 'A')); columnNumber = (columnNumber - 1) / 26; } return str.reverse().toString(); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JavaScript_코딩 기초 트레이닝_글자 이어 붙여 문자열 만들기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_글자 이어 붙여 문자열 만들기_school_programmers 풀이 function solution(my_string, index_list) { // index_list의 배열 요소값을 my_string의 문자배열의 인덱스로 사용한다. return index_list.map((v) => [...my_string][v]).join(""); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181915 코딩테스트 연습 - 글자 이어 붙여 문자열 만들기 문자열 my_string 과 정수 배열 index_list 가 매개변수로 주어집니다. my_string 의 index_list 의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ my_string 의 길이 ≤ 1,000 my_string 의 원소

JavaScript_코딩 기초 트레이닝_원하는 문자열 찾기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_원하는 문자열 찾기_school_programmers 풀이 function solution(myString, pat) { // 두 문자열을 대문자로 변환한 뒤 포함 결과에 따른 값을 반환한다. return (myString.toUpperCase()).indexOf(pat.toUpperCase()) > -1 ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181878 코딩테스트 연습 - 원하는 문자열 찾기 알파벳으로 이루어진 문자열 myString 과 pat 이 주어집니다. myString 의 연속된 부분 문자열 중 pat 이 존재하면 1을 그렇지 않으면 0을 return 하는 solution 함수를 완성해 주세요. 단, 알파벳 대문자와 소문자는 구분하지 않습니다. 제한사항 1 ≤ myString 의 길이 ≤ 100,000 1 ≤ pat 의 길이 ≤ 300 myS

JavaScript_코딩 기초 트레이닝_n 번째 원소부터_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_n 번째 원소부터_school_programmers 풀이 function solution(num_list, n) { // 배열 인덱스가 n - 1 보다 크거나 같은 인덱스 기준으로 필터링한다. return num_list.filter((v,i) => i >= n - 1); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181892 코딩테스트 연습 - n 번째 원소부터 정수 리스트 num_list 와 정수 n 이 주어질 때, n 번째 원소부터 마지막 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ num_list 의 길이 ≤ 30 1 ≤ num_list 의 원소 ≤ 9 1 ≤ n ≤ num_list 의 길이 입출력 예 num_list n result [2, 1, 6] 3 [6] [5, 2, 1, 7, 5] 2 [2,

JavaScript_코딩 기초 트레이닝_공백으로 구분하기 2_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_공백으로 구분하기 2_school_programmers 풀이 function solution(my_string) { // 공백을 한 공백으로 만든 뒤, 공백을 기준으로 배열화한다. return my_string.replace(/(^ *)|( *$)/g, "").replace(/ +/g, " ").split(' '); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181868 코딩테스트 연습 - 공백으로 구분하기 2 단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string 이 매개변수로 주어질 때, my_string 에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항 my_string 은 영소문자와 공백으로만 이루어져 있습니다. 1 ≤ my_string 의 길이 ≤ 1,000 my_string 의

JavaScript_코딩 기초 트레이닝_l로 만들기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_l로 만들기_school_programmers 풀이 function solution(myString) { // 문자열을 배열로 만든 다음 문자가 "l"보다 앞선 경우 "l"로 변환한 뒤 다시 합친다. return [...myString].map((v) => v = v <= "l" ? "l" : v).join(""); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181834 코딩테스트 연습 - l로 만들기 알파벳 소문자로 이루어진 문자열 myString 이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ myString ≤ 100,000 myString 은 알파벳 소문자로 이루어진 문자열입니다. 입출력 예 myString result "abcdevwxyz" "lllllv

JavaScript_코딩 기초 트레이닝_배열의 원소만큼 추가하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_배열의 원소만큼 추가하기_school_programmers 풀이 function solution(arr) { // arr의 요소만큼 배열에 요소 값을 요소 개수만큼 채운 배열 배열을 만든 다음 한번에 합친다. return arr.map((v) => Array(v).fill(v)).flat(); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181861 코딩테스트 연습 - 배열의 원소만큼 추가하기 아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 양의 정수 배열 arr 가 매개변수로 주어질 때, arr 의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ arr 의 길이 ≤ 100 1 ≤ arr 의 원소 ≤ 100 입출력 예 arr result

JavaScript_코딩 기초 트레이닝_A 강조하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_A 강조하기_school_programmers 풀이 function solution(myString) { // "a" 또는 "A" 인경우 "A", 아닌 경우 toLowerCase()로 소문자로 변환한 뒤 합친다. return [...myString].map(v=> (v == "a" || v == "A") ? "A" : v.toLowerCase()).join(""); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181874 코딩테스트 연습 - A 강조하기 문자열 myString 이 주어집니다. myString 에서 알파벳 "a"가 등장하면 전부 "A"로 변환하고, "A"가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요. 제한사항 1 ≤ myString 의 길이 ≤ 20 myString 은 알파벳으로 이루어진 문자열입니

JavaScript_코딩 기초 트레이닝_뒤에서 5등 위로_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_뒤에서 5등 위로_school_programmers 풀이 function solution(num_list) { // 배열을 오름차순으로 정렬한 뒤, 배열 인덱스가 4보다 큰 배열을 반환한다. return num_list.sort((a,b) => a - b).filter((v,i) => i > 4); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181852 코딩테스트 연습 - 뒤에서 5등 위로 정수로 이루어진 리스트 num_list 가 주어집니다. num_list 에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요. 제한사항 6 ≤ num_list 의 길이 ≤ 30 1 ≤ num_list 의 원소 ≤ 100 입출력 예 num_list result [12, 4, 15, 46, 38, 1, 14, 56, 32

JavaScript_코딩 기초 트레이닝_뒤에서 5등까지_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_뒤에서 5등까지_school_programmers 풀이 function solution(num_list) { // 오름차순 정렬 후 slice를 이용하여 첫 인덱스부터 요소가 5개인 배열을 반환한다. return num_list.sort((a,b) => a - b).slice(0,5); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181853 코딩테스트 연습 - 뒤에서 5등까지 문제 설명 정수로 이루어진 리스트 num_list 가 주어집니다. num_list 에서 가장 작은 5개의 수를 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요. 제한사항 6 ≤ num_list 의 길이 ≤ 30 1 ≤ num_list 의 원소 ≤ 100 입출력 예 num_list result [12, 4, 15, 46, 38, 1, 14] [1, 4, 12, 14, 1

JavaScript_코딩 기초 트레이닝_배열의 길이에 따라 다른 연산하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_배열의 길이에 따라 다른 연산하기_school_programmers 풀이 function solution(arr, n) { // arr길이가 홀수면 짝수 인덱스에, 짝수면 홀수 인덱스에 값을 더한다. return arr.map((v,i) => arr.length % 2 == 1 ? (i % 2 == 0 ? v + n : v ) : (i % 2 == 1 ? v + n : v) ); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181854 코딩테스트 연습 - 배열의 길이에 따라 다른 연산하기 정수 배열 arr 과 정수 n 이 매개변수로 주어집니다. arr 의 길이가 홀수라면 arr 의 모든 짝수 인덱스 위치에 n 을 더한 배열을, arr 의 길이가 짝수라면 arr 의 모든 홀수 인덱스 위치에 n 을 더한 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항

JavaScript_코딩 기초 트레이닝_5명씩_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_5명씩_school_programmers 풀이 function solution(names) { // 인덱스가 5의 배수인경우 출력한다. return names.filter((v,i) => i % 5 == 0); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181886 코딩테스트 연습 - 5명씩 최대 5명씩 탑승가능한 놀이기구를 타기 위해 줄을 서있는 사람들의 이름이 담긴 문자열 리스트 names 가 주어질 때, 앞에서 부터 5명씩 묶은 그룹의 가장 앞에 서있는 사람들의 이름을 담은 리스트를 return하도록 solution 함수를 완성해주세요. 마지막 그룹이 5명이 되지 않더라도 가장 앞에 있는 사람의 이름을 포함합니다. 제한사항 5 ≤ names 의 길이 ≤ 30 1 ≤ names 의 원소의 길이 ≤ 10 names 의 원소는 영어 알파벳 소문자로만 이루어져 있습니다. 입

JavaScript_코딩 기초 트레이닝_부분 문자열 이어 붙여 문자열 만들기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_부분 문자열 이어 붙여 문자열 만들기_school_programmers 풀이 function solution(my_strings, parts) { // substring과 join을 사용한 풀이법이다. return my_strings.map((v,i) => v = v.substring(parts[i][0],parts[i][1]+1) ).join(""); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181911 코딩테스트 연습 - 부분 문자열 이어 붙여 문자열 만들기 길이가 같은 문자열 배열 my_strings 와 이차원 정수 배열 parts 가 매개변수로 주어집니다. parts[i] 는 [s, e] 형태로, my_string[i] 의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다. 각 my_strings 의 원소의 parts 에 해당하는 부분 문자열을 순서대로 이어

JavaScript_코딩 기초 트레이닝_홀수 vs 짝수_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_홀수 vs 짝수_school_programmers 풀이 function solution(num_list) { let num1 = 0; let num2 = 0 // 인덱스 기준, 홀수 또는 짝수 번째 원소를 더해준다. num_list.map((v, idx) => { !(idx % 2) ? num1 += v : num2 += v; }); return num2 >= num1 ? num2 : num1; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181887 코딩테스트 연습 - 홀수 vs 짝수 정수 리스트 num_list 가 주어집니다. 가장 첫 번째 원소를 1번 원소라고 할 때, 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 return 하도록 solution 함수를 완성해주세요. 두 값이 같을 경우 그 값을 return합니다. 제한사항 5 ≤ num_list 의

JAVA_Majority Element_LeetCode 169 [내부링크]

JAVA_Majority Element_LeetCode 169 풀이 class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length/2]; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Excel Sheet Column Number_LeetCode 171 [내부링크]

JAVA_Excel Sheet Column Number_LeetCode 171 풀이 class Solution { public int titleToNumber(String columnTitle) { int ans = 0; for (int i = 0; i < columnTitle.length(); i++) { ans *= 26; char c = columnTitle.charAt(i); int n = (int) (c - 'A' + 1); ans += n; } return ans; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Reverse Bits_LeetCode 190 [내부링크]

JAVA_Reverse Bits_LeetCode 190 풀이 public class Solution { public int reverseBits(int n) { return Integer.reverse(n); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Number of 1 Bits_LeetCode 191 [내부링크]

JAVA_Number of 1 Bits_LeetCode 191 풀이 public class Solution { public int hammingWeight(int n) { return Integer.bitCount(n); } } * 출처 https://leetcode.com/problems/number-of-1-bits/solutions/

JAVA_Happy Number_LeetCode 202 [내부링크]

JAVA_Happy Number_LeetCode 202 풀이 class Solution { public boolean isHappy(int n) { if (n <= 0) return false; while (n >= 10) { int sum = 0; while (n != 0) { sum += (n % 10) * (n % 10); n /= 10; } n = sum; } return n == 1 || n == 7; } } * 출처 https://leetcode.com/problems/happy-number/ Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Remove Linked List Elements_LeetCode 203 [내부링크]

JAVA_Remove Linked List Elements_LeetCode 203 풀이 class Solution { public ListNode removeElements(ListNode head, int val) { if (head == null) return null; head.next = removeElements(head.next, val); return head.val == val ? head.next : head; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Isomorphic Strings_LeetCode 205 [내부링크]

JAVA_Isomorphic Strings_LeetCode 205 풀이 class Solution { public boolean isIsomorphic(String s, String t) { if(s.length() != t.length()) return false; int[] map1 = new int[256]; int[] map2 = new int[256]; for(int idx = 0; idx < s.length(); idx++){ if(map1[s.charAt(idx)] != map2[t.charAt(idx)]) return false; map1[s.charAt(idx)] = idx + 1; map2[t.charAt(idx)] = idx + 1; } return true; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and ge

JAVA_Reverse Linked List_LeetCode 206 [내부링크]

JAVA_Reverse Linked List_LeetCode 206 풀이 class Solution { public ListNode reverseList(ListNode head) { if(null == head || null == head.next) return head; ListNode rest = head.next; ListNode reversedRest = reverseList(rest); rest.next = head; head.next = null; return reversedRest; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Contains Duplicate_LeetCode 217 [내부링크]

JAVA_Contains Duplicate_LeetCode 217 풀이 class Solution { public boolean containsDuplicate(int[] nums) { HashSet<Integer> map = new HashSet<Integer>(); for (int idx = 0; idx < nums.length; idx ++){ if(map.contains(nums[idx])){ return true; } map.add(nums[idx]); } return false; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Contains Duplicate II_LeetCode 219 [내부링크]

JAVA_Contains Duplicate II_LeetCode 219 풀이 class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { if (k == 0) return false; HashMap<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int integer = nums[i]; if (map.containsKey(integer) && i - map.get(integer) <= k) return true; map.put(integer, i); } return false; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for you

JAVA_Implement Stack using Queues_LeetCode 225 [내부링크]

JAVA_Implement Stack using Queues_LeetCode 225 풀이 class MyStack { ArrayDeque<Integer> q; public MyStack() { q = new ArrayDeque<>(); } public void push(int x) { q.addFirst(x); } public int pop() { return q.remove(); } public int top() { return q.peekFirst(); } public boolean empty() { return q.isEmpty(); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JavaScript_코딩 기초 트레이닝_공백으로 구분하기 1_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_공백으로 구분하기 1_school_programmers 풀이 function solution(my_string) { // split을 이용한 풀이법 return my_string.split(' '); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181869 코딩테스트 연습 - 공백으로 구분하기 1 단어가 공백 한 개로 구분되어 있는 문자열 my_string 이 매개변수로 주어질 때, my_string 에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요. 제한사항 my_string 은 영소문자와 공백으로만 이루어져 있습니다. 1 ≤ my_string 의 길이 ≤ 1,000 my_string 의 맨 앞과 맨 뒤에 글자는 공백이 아닙니다. 입출력 예 my_string result "i love you" ["i", "lov

JavaScript_코딩 기초 트레이닝_특정한 문자를 대문자로 바꾸기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_특정한 문자를 대문자로 바꾸기_school_programmers 풀이 function solution(my_string, alp) { // replaceall과 toUpperCase()를 이용해서 푼 문제 return my_string.replaceAll(alp,alp.toUpperCase()); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181873 코딩테스트 연습 - 특정한 문자를 대문자로 바꾸기 영소문자로 이루어진 문자열 my_string 과 영소문자 1글자로 이루어진 문자열 alp 가 매개변수로 주어질 때, my_string 에서 alp 에 해당하는 모든 글자를 대문자로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ my_string 의 길이 ≤ 1,000 입출력 예 my_string alp result "programmer

JavaScript_코딩 기초 트레이닝_접미사인지 확인하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_접미사인지 확인하기_school_programmers 풀이 function solution(my_string, is_suffix) { // lastIndexOf를 이용하여 뒤에서부터 찾는 인덱스값과 특정 문자를 제거한 문자열의 길이를 비교한다. return my_string.lastIndexOf(is_suffix) == my_string.replace(is_suffix,'').length ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181908 코딩테스트 연습 - 접미사인지 확인하기 어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다. 문자열 my_string 과 is_suffix 가 주어질 때, is_su

JavaScript_코딩 기초 트레이닝_주사위 게임 1_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_주사위 게임 1_school_programmers 풀이 function solution(a, b) { // 조건에 맞춰서 출력한다. return a % 2 == 1 && b % 2 == 1 ? a * a + b * b : a % 2 == 0 && b % 2 == 0 ? Math.abs(a-b) : 2 * (a + b); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181839 코딩테스트 연습 - 주사위 게임 1 1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다. 두 주사위를 굴렸을 때 나온 숫자를 각각 a , b 라고 했을 때 얻는 점수는 다음과 같습니다. a 와 b 가 모두 홀수라면 a 2 + b 2 점을 얻습니다. a 와 b 중 하나만 홀수라면 2 × ( a + b ) 점을 얻습니다. a 와 b 모두 홀수가 아니라면 | a - b | 점을 얻습니다. 두 정수 a 와 b

JavaScript_코딩 기초 트레이닝_카운트 다운_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_카운트 다운_school_programmers 풀이 function solution(start, end) { // 차이만큼 길이를 가진 배열을 만든 뒤, 각 요소 위치값을 시작값 - 인덱스로 설정한다. return Array.from({length:start - end + 1},(_,i) => start - i ); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181899 코딩테스트 연습 - 카운트 다운 문제 설명 정수 start 와 end 가 주어질 때, start 에서 end 까지 1씩 감소하는 수들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ end ≤ start ≤ 50 입출력 예 start end result 10 3 [10, 9, 8, 7, 6, 5, 4, 3] 입출력 예 설명 입출력 예 #1 10부터 3까지 1씩

JavaScript_코딩 기초 트레이닝_문자열 바꿔서 찾기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 바꿔서 찾기_school_programmers 풀이 function solution(myString, pat) { // 요소값을 변환한 뒤, 포함 인덱스를 반환하여 있을 경우 1, 없으면 0을 출력한다. return [...myString].map((v) => v = v == "A" ? "B" : "A").join("").indexOf(pat) > -1 ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181864 코딩테스트 연습 - 문자열 바꿔서 찾기 문자 "A"와 "B"로 이루어진 문자열 myString 과 pat 가 주어집니다. myString 의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat 이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요. 제한사항 1 ≤ myString 의 길이

JAVA_Invert Binary Tree_LeetCode 226 [내부링크]

JAVA_Invert Binary Tree_LeetCode 226 풀이 class Solution { public TreeNode invertTree(TreeNode root) { if(root!=null){ TreeNode tmp = root.left; root.left =invertTree(root.right); root.right = invertTree(tmp); } return root; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Binary Tree Tilt_LeetCode 563 [내부링크]

JAVA_Binary Tree Tilt_LeetCode 563 풀이 class Solution { int findSum(TreeNode root){ if(root==null) return 0; return root.val + findSum(root.left) + findSum(root.right); } public int findTilt(TreeNode root) { if(root==null) return 0; int left = findTilt(root.left); int right = findTilt(root.right); return Math.abs(findSum(root.left)-findSum(root.right))+left+right; } } * 출처 Binary Tree Tilt - LeetCode Binary Tree Tilt - Given the root of a binary tree, return the sum of every tree node's tilt. The

JAVA_Reshape the Matrix_LeetCode 566 [내부링크]

JAVA_Reshape the Matrix_LeetCode 566 풀이 class Solution { public int[][] matrixReshape(int[][] mat, int r, int c) { int n = mat[0].length; if(r * c != mat.length * n) { return mat; } int[][] ans = new int[r][c]; for(int i = 0; i < r * c; i++) { ans[i/c][i%c] = mat[i/n][i%n]; } return ans; } } * 출처 Reshape the Matrix - LeetCode Reshape the Matrix - In MATLAB, there is a handy function called reshape which can reshape an m x n matrix into a new one with a different size r x c keeping its original d

JAVA_Subtree of Another Tree_LeetCode 572 [내부링크]

JAVA_Subtree of Another Tree_LeetCode 572 풀이 class Solution { public boolean isSubtree(TreeNode root, TreeNode subRoot) { if(root == null || subRoot == null) { return false; } if(root.val == subRoot.val && treeChk(root,subRoot)) { //if entire tree same return true return true; } return isSubtree(root.left,subRoot) || isSubtree(root.right,subRoot); } private boolean treeChk(TreeNode root, TreeNode subRoot) { if(root == null && subRoot == null) { return true; } if(root == null || subRoot == null |

JAVA_Distribute Candies_LeetCode 575 [내부링크]

JAVA_Distribute Candies_LeetCode 575 풀이 class Solution { public int distributeCandies(int[] candyType) { Set<Integer> cset = new HashSet<>(); for (int c : candyType) cset.add(c); return Math.min(cset.size(), candyType.length / 2); } } * 출처 Distribute Candies - LeetCode Distribute Candies - Alice has n candies, where the ith candy is of type candyType[i]. Alice noticed that she started to gain weight, so she visited a doctor. The doctor advised Alice to only eat n / 2 of the candies she has (n is

JAVA_N-ary Tree Preorder Traversal_LeetCode 589 [내부링크]

JAVA_N-ary Tree Preorder Traversal_LeetCode 589 풀이 class Solution { List<Integer> arr = new ArrayList<>(); public List<Integer> preorder(Node root) { if (root == null) return arr; arr.add(root.val); for (Node child : root.children) preorder(child); return arr; } } * 출처 N-ary Tree Preorder Traversal - LeetCode N-ary Tree Preorder Traversal - Given the root of an n-ary tree, return the preorder traversal of its nodes' values. Nary-Tree input serialization is represented in their level order traver

JAVA_N-ary Tree Postorder Traversal_LeetCode 590 [내부링크]

JAVA_N-ary Tree Postorder Traversal_LeetCode 590 풀이 class Solution { List<Integer> arr = new ArrayList(); public List<Integer> postorder(Node root) { if(root == null) return arr; for(Node n: root.children) postorder(n); arr.add(root.val); return arr; } } * 출처 N-ary Tree Postorder Traversal - LeetCode N-ary Tree Postorder Traversal - Given the root of an n-ary tree, return the postorder traversal of its nodes' values. Nary-Tree input serialization is represented in their level order traversal. Ea

JAVA_Longest Harmonious Subsequence_LeetCode 594 [내부링크]

JAVA_Longest Harmonious Subsequence_LeetCode 594 풀이 class Solution { public int findLHS(int[] nums) { Map<Integer,Integer> map = new HashMap<>(); for(int i:nums) map.put(i,map.getOrDefault(i,0)+1); int max=0; for(int i : map.keySet()){ if(map.containsKey(i+1)) max = Math.max(max,map.get(i) + map.get(i+1)); } return max; } } * 출처 Longest Harmonious Subsequence - LeetCode Longest Harmonious Subsequence - We define a harmonious array as an array where the difference between its maximum value and it

JAVA_Range Addition II_LeetCode 598 [내부링크]

JAVA_Range Addition II_LeetCode 598 풀이 class Solution { public int maxCount(int m, int n, int[][] ops) { if (ops.length==0) return m*n; for(int[] val : ops) { m = val[0] < m ? val[0] : m; n = val[1] < n ? val[1] : n; } return m * n; } } * 출처 Range Addition II - LeetCode Range Addition II - You are given an m x n matrix M initialized with all 0's and an array of operations ops, where ops[i] = [ai, bi] means M[x][y] should be incremented by one for all 0 <= x < ai and 0 <= y < bi. Count and return

JAVA_Minimum Index Sum of Two Lists_LeetCode 599 [내부링크]

JAVA_Minimum Index Sum of Two Lists_LeetCode 599 풀이 class Solution { public String[] findRestaurant(String[] list1, String[] list2) { Map<String, Integer> map = new HashMap<>(); for (int i = 0; i < list1.length; i++) { map.put(list1[i], i); } List<String> mins = new ArrayList<>(); int minSum = Integer.MAX_VALUE; for (int i = 0; i < list2.length; i++) { String rest2 = list2[i]; if (map.containsKey(rest2)) { int sum = map.get(rest2) + i; if (sum < minSum) { mins = new ArrayList<>(); minSum = sum;

JAVA_Can Place Flowers_LeetCode 605 [내부링크]

JAVA_Can Place Flowers_LeetCode 605 풀이 class Solution { public boolean canPlaceFlowers(int[] flowerbed, int n) { int cnt = 0, N = flowerbed.length; for (int i = 0; i < N; i++) { if ((flowerbed[i] == 0) && ((i == 0 || flowerbed[i-1] == 0) && (i == N-1 || flowerbed[i+1] == 0))) { cnt++; flowerbed[i] = 1; } } return cnt >= n; } } * 출처 Can Place Flowers - LeetCode Can Place Flowers - You have a long flowerbed in which some of the plots are planted, and some are not. However, flowers cannot be plante

JAVA_Leaf-Similar Trees_LeetCode 872 [내부링크]

JAVA_Leaf-Similar Trees_LeetCode 872 풀이 class Solution { public boolean leafSimilar(TreeNode root1, TreeNode root2) { List<Integer> leaf1 = new ArrayList<Integer>(); List<Integer> leaf2 = new ArrayList<Integer>(); dfs(root1, leaf1); dfs(root2, leaf2); return leaf1.equals(leaf2); } public void dfs(TreeNode root, List leafs){ if (root == null) return; if (root.left == null && root.right ==null) leafs.add(root.val); dfs(root.right, leafs); dfs(root.left, leafs); } } * 출처 Leaf-Similar Trees - LeetCo

JAVA_Middle of the Linked List_LeetCode 876 [내부링크]

JAVA_Middle of the Linked List_LeetCode 876 풀이 class Solution { public ListNode middleNode(ListNode head) { ListNode node1 = head, node2 = head; while (node2 != null && node2.next != null) { node1 = node1.next; node2 = node2.next.next; } return node1; } } * 출처 Middle of the Linked List - LeetCode Can you solve this real interview question? Middle of the Linked List - Given the head of a singly linked list, return the middle node of the linked list. If there are two middle nodes, return the secon

JAVA_Projection Area of 3D Shapes_LeetCode 883 [내부링크]

JAVA_Projection Area of 3D Shapes_LeetCode 883 풀이 class Solution { public int projectionArea(int[][] grid) { int res = 0, x, y; for (int i = 0; i < grid.length; ++i) { x = 0; y = 0; for (int j = 0; j < grid.length; ++j) { x = Math.max(x, grid[i][j]); y = Math.max(y, grid[j][i]); if (grid[i][j] > 0) ++res; } res += x + y; } return res; } } * 출처 Projection Area of 3D Shapes - LeetCode Can you solve this real interview question? Projection Area of 3D Shapes - You are given an n x n grid where we pl

JAVA_Uncommon Words from Two Sentences_LeetCode 884 [내부링크]

JAVA_Uncommon Words from Two Sentences_LeetCode 884 풀이 class Solution { public String[] uncommonFromSentences(String s1, String s2) { Map<String,Integer> map = new HashMap<>(); ArrayList<String> list = new ArrayList<>(); for(String str : s1.split(" ")) map.put(str,map.getOrDefault(str,0) + 1); for(String str : s2.split(" ")) map.put(str,map.getOrDefault(str,0) + 1); for(Map.Entry<String,Integer> map2 : map.entrySet()){ if(map2.getValue() == 1) list.add(map2.getKey()); } return list.toArray(new S

JAVA_Fair Candy Swap_LeetCode 888 [내부링크]

JAVA_Fair Candy Swap_LeetCode 888 풀이 class Solution { public int[] fairCandySwap(int[] aliceSizes, int[] bobSizes) { int sum = (IntStream.of(aliceSizes).sum() - IntStream.of(bobSizes).sum()) / 2; HashSet<Integer> set = new HashSet<>(); for (int num1 : aliceSizes) set.add(num1); for (int num2 : bobSizes){ if (set.contains(num2 + sum)) return new int[] {num2 + sum, num2}; } return new int[0]; } } * 출처 Fair Candy Swap - LeetCode Can you solve this real interview question? Fair Candy Swap - Alice an

JAVA_Surface Area of 3D Shapes_LeetCode 892 [내부링크]

JAVA_Surface Area of 3D Shapes_LeetCode 892 풀이 class Solution { public int surfaceArea(int[][] grid) { int area = 0; for(int i = 0; i < grid.length; i++){ for(int j = 0;j < grid.length;j++){ if(grid[i][j] > 0) area += grid[i][j] * 4 + 2; if(i > 0) area -= Math.min(grid[i][j], grid[i-1][j]) * 2; if(j > 0) area -= Math.min(grid[i][j], grid[i][j-1]) * 2; } } return area; } } * 출처 Surface Area of 3D Shapes - LeetCode Can you solve this real interview question? Surface Area of 3D Shapes - You are giv

JavaScript_옹알이_1_school_programmers [내부링크]

JavaScript_옹알이_1_school_programmers 풀이 function solution(babbling) { var chkArr = ["aya", "ye", "woo", "ma"]; var word = ""; var answer = 0; for(var i=0; i<babbling.length; i++) { word = babbling[i].toString(); for(var j=0; j<chkArr.length; j++) word = word.replaceAll(chkArr[j], ' '); if(!(word.trim())) answer++; } return answer; } 값 체크 시 공백을 ' '로 하고 trim()을 한 이유는 wyeoo에서 ye를 ''로 치환한 뒤 남은 값이 woo이므로 해당 옹알이 return 값에 포함되기 때문이다. ''가 아닌 ' '로 치환한 다음 trim()을 통해 스페이스바 문자열을 지운걸 확인 js에서 if문 조건으로 문자열 앞에 !

JavaScript_다음에 올 숫자_school_programmers [내부링크]

JavaScript_다음에 올 숫자_school_programmers 풀이 function solution(common) { if (common[2] - common[1] === common[1] - common[0]) return common.pop() + common[1] - common[0]; else return common.pop() * (common[1] / common[0]); } * 출처 코딩테스트 연습 - 다음에 올 숫자 등차수열 혹은 등비수열 common 이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. 제한사항 2 < common 의 길이 < 1,000 -1,000 < common 의 원소 < 2,000 common 의 원소는 모두 정수입니다. 등차수열 혹은 등비수열이 아닌 경우는 없습니다. 등비수열인 경우 공비는 0이 아닌 정수입니다. 입출력 예 common result [1, 2, 3, 4] 5

JavaScript_연속된 수의 합_school_programmers [내부링크]

JavaScript_연속된 수의 합_school_programmers 풀이 function solution(num, total) { var answer = []; let sum = num * (1 + num) / 2; let start = (total - sum) / num; for(var i = 0; i<num; i++) answer[i] = start + i + 1; return answer; } * 출처 코딩테스트 연습 - 연속된 수의 합 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num 과 total 이 주어집니다. 연속된 수 num 개를 더한 값이 total 이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요. 제한사항 1 ≤ num ≤ 100 0 ≤ total ≤ 1000 num 개의 연속된 수를 더하여 total 이 될 수 없는 테스트 케이스는 없습니다. 입출력 예 num total resul

JavaScript_종이 자르기_school_programmers [내부링크]

JavaScript_종이 자르기_school_programmers 풀이 function solution(M, N) { return M * N - 1; } * 출처 코딩테스트 연습 - 종이 자르기 머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다. 정수 M , N 이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요. 제한사항 0 < M , N < 100 종이를 겹쳐서 자를 수 없습니다. 입출력 예 M N result 2 2 3 2 5 9 1 1 0 입출력 예 설명 입출력 예 #1 본문과 동일합니다. 입출력 예 #2 가로 2 세로 5인 종이는 ... school.programmers.co.kr

JavaScript_문자열 밀기_school_programmers [내부링크]

JavaScript_문자열 밀기_school_programmers 풀이 function solution(A, B) { if (A == B) return 0; for(let i = 1; i < A.length+1; i++){ let newStr = A[A.length - 1] + A.substring(0, A.length - 1); if(newStr == B) return i; A = newStr; } return -1; } * 출처 코딩테스트 연습 - 문자열 밀기 문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A 와 B 가 매개변수로 주어질 때, A 를 밀어서 B 가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B 가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요. 제한사항 0 < A 의 길이 = B 의 길이 < 100

JavaScript_잘라서 배열로 저장하기_school_programmers [내부링크]

JavaScript_잘라서 배열로 저장하기_school_programmers 풀이 function solution(my_str, n) { let answer = []; for (let i = 0; i < my_str.length; i += n) answer.push(my_str.slice(i, i + n)); return answer; } * 출처 코딩테스트 연습 - 잘라서 배열로 저장하기 문자열 my_str 과 n 이 매개변수로 주어질 때, my_str 을 길이 n 씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_str 의 길이 ≤ 100 1 ≤ n ≤ my_str 의 길이 my_str 은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다. 입출력 예 my_str n result "abc1Addfggg4556b" 6 ["abc1Ad", "dfggg4", "556b"] "abcdef123" 3 ["abc", "def", "123"

JavaScript_7의 개수_school_programmers [내부링크]

JavaScript_7의 개수_school_programmers 풀이 function solution(array) { return array.join('').split('7').length - 1; } * 출처 코딩테스트 연습 - 7의 개수 머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array 가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요. 제한사항 1 ≤ array 의 길이 ≤ 100 0 ≤ array 의 원소 ≤ 100,000 입출력 예 array result [7, 77, 17] 4 [10, 29] 0 입출력 예 설명 입출력 예 #1 [7, 77, 17]에는 7이 4개 있으므로 4를 return 합니다. 입출력 예 #2 [10, 29]에는 7이 없으므로 0을 return 합니다. school.programmers.co.kr

JavaScript_문자열 정렬하기 (2)_school_programmers [내부링크]

JavaScript_문자열 정렬하기 (2)_school_programmers 풀이 function solution(my_string) { return my_string.toLowerCase().split('').sort().join(''); } 문자열을 소문자로 변환, 문자로 나눈뒤, 정렬한 다음 붙이면 끝나는 문제 * 출처 코딩테스트 연습 - 문자열 정렬하기 (2) 영어 대소문자로 이루어진 문자열 my_string 이 매개변수로 주어질 때, my_string 을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 제한사항 0 < my_string 길이 < 100 입출력 예 my_string result "Bcad" "abcd" "heLLo" "ehllo" "Python" "hnopty" 입출력 예 설명 입출력 예 #1 "Bcad"를 모두 소문자로 바꾸면 "bcad"이고 이를 알파벳 순으로 정렬하면 "abcd"입니다. 입출력

JavaScript_세균 증식_school_programmers [내부링크]

JavaScript_세균 증식_school_programmers 풀이 function solution(n, t) { return Math.pow(2,t) * n; } * 출처 코딩테스트 연습 - 세균 증식 어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n 과 경과한 시간 t 가 매개변수로 주어질 때 t 시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 10 1 ≤ t ≤ 15 입출력 예 n t result 2 10 2048 7 15 229,376 입출력 예 설명 입출력 예 #1 처음엔 2마리, 1시간 후엔 4마리, 2시간 후엔 8마리, ..., 10시간 후엔 2048마리가 됩니다. 따라서 2048을 return합니다. 입출력 예 #2 처음엔 7마리, 1시간 후엔... school.programmers.co.kr

JavaScript_제곱수 판별하기_school_programmers [내부링크]

JavaScript_제곱수 판별하기_school_programmers 풀이 function solution(n) { return Number.isInteger(Math.sqrt(n)) ? 1 : 2; } * 출처 코딩테스트 연습 - 제곱수 판별하기 어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n 이 매개변수로 주어질 때, n 이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 1,000,000 입출력 예 n result 144 1 976 2 입출력 예 설명 입출력 예 #1 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다. 입출력 예 #2 976은 제곱수가 아닙니다. 따라서 2를 return합니다. school.programmers.co.kr

JavaScript_문자열안에 문자열_school_programmers [내부링크]

JavaScript_문자열안에 문자열_school_programmers 풀이 function solution(str1, str2) { return str1.indexOf(str2) > -1 ? 1 : 2; } * 출처 코딩테스트 연습 - 문자열안에 문자열 문자열 str1 , str2 가 매개변수로 주어집니다. str1 안에 str2 가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ str1 의 길이 ≤ 100 1 ≤ str2 의 길이 ≤ 100 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다. 입출력 예 str1 str2 result "ab6CDE443fgh22iJKlmn1o" "6CD" 1 "ppprrrogrammers" "pppp" 2 "AbcAbcA" "AAA" 2 입출력 예 설명 입출력 예 #1 "ab 6CD E44... school.programmers.co.kr

JavaScript_OX퀴즈_school_programmers [내부링크]

JavaScript_OX퀴즈_school_programmers 풀이 function solution(quiz) { return quiz.map((str) => { return eval(str.split(" = ")[0]) === Number(str.split(" = ")[1]) ? "O" : "X"; }); } 문자열 배열에 수식과 답이 있으므로, 배열 안 문자열을 뽑기 위해 map을 사용 문자열중 ' = '을 기준으로 앞과, 뒤의 값을 비교하는 문제 * 출처 코딩테스트 연습 - OX퀴즈 덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz 가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다. 1 ≤ quiz 의 길이

JavaScript_자릿수 더하기_school_programmers [내부링크]

JavaScript_자릿수 더하기_school_programmers 풀이 function solution(n) { return Array.from(String(n)).reduce((a, b) => Number(a) + Number(b), 0); } 정수 n값을 -> 배열 -> 숫자를 추출하여 더하면 끝 * 출처 코딩테스트 연습 - 자릿수 더하기 문제 설명 정수 n 이 매개변수로 주어질 때 n 의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요 제한사항 0 ≤ n ≤ 1,000,000 입출력 예 n result 1234 10 930211 16 입출력 예 설명 입출력 예 #1 1 + 2 + 3 + 4 = 10을 return합니다. 입출력 예 #2 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다. school.programmers.co.kr

JavaScript_n의 배수 고르기_school_programmers [내부링크]

JavaScript_n의 배수 고르기_school_programmers 풀이 function solution(n, numlist) { return numlist.filter((num) => num % n === 0); } 정수배열에서 filter를 사용한 문제 * 출처 코딩테스트 연습 - n의 배수 고르기 정수 n 과 정수 배열 numlist 가 매개변수로 주어질 때, numlist 에서 n 의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 10,000 1 ≤ numlist 의 크기 ≤ 100 1 ≤ numlist 의 원소 ≤ 100,000 입출력 예 n numlist result 3 [4, 5, 6, 7, 8, 9, 10, 11, 12] [6, 9, 12] 5 [1, 9, 3, 10, 13, 5] [10, 5] 12 [2, 100, 120, 600, 12, 12] [... school.programmers.co.kr

JavaScript_코딩 기초 트레이닝_수 조작하기 2_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_수 조작하기 2_school_programmers 풀이 function solution(numLog) { return numLog.reduce((str, val, idx, arr) => { // reduce를 이용, 누적값에 조건에 맞는 문자열을 추가해서 누적값을 반환한다. return str + (val - arr[idx - 1] == 1 ? "w" : val - arr[idx - 1] == -1 ? "s" : val - arr[idx - 1] == -10 ? "a" : val - arr[idx - 1] == 10 ? "d" : ""); }, ""); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181925 코딩테스트 연습 - 수 조작하기 2 정수 배열 numLog 가 주어집니다. 처음에 numLog[0] 에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자

JavaScript_코딩 기초 트레이닝_배열 만들기 2_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_배열 만들기 2_school_programmers 풀이 function solution(l, r) { // 시작(l) 부터 끝(r)까지의 배열에서 filter로 0,5를 공백으로 변환한 값의 길이가 0일경우에 조건을 충족한다. const v = Array.from({ length: (r - l + 1) / 1}, (_, i) => l + i).filter(x => (new String(x)).replace(/['0','5']/gi, '').length === 0); // 만약 v가 빈값이 아니라면 v를, 빈값이라면 -1을 담은 배열을 반환한다. return v.length ? v : [-1]; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181921 코딩테스트 연습 - 배열 만들기 2 정수 l 과 r 이 주어졌을 때, l 이상 r 이하의 정수 중에서 숫자 "0"과 "5"로만

JavaScript_코딩 기초 트레이닝_카운트 업_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_카운트 업_school_programmers 풀이 function solution(start, end) { // 시작, 끝 값을 넣고 array.from을 이용하여 배열을 만든다. return Array.from({ length: (end - start + 1) / 1}, (_, i) => start + i); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181920 코딩테스트 연습 - 카운트 업 문제 설명 정수 start 와 end 가 주어질 때, start 부터 end 까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ start ≤ end ≤ 50 입출력 예 start end result 3 10 [3, 4, 5, 6, 7, 8, 9, 10] 입출력 예 설명 입출력 예 #1 3부터 10까지의 숫자들을 담은 리스트

JavaScript_코딩 기초 트레이닝_콜라츠 수열 만들기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_콜라츠 수열 만들기_school_programmers 풀이 function solution(n) { const arr = []; // n이 1이 안될때까지 반복하며 조건에 따라 값을 설정하기 전에 배열에 값을 넣고 반복이 끝나면 1을 마지막으로 넣는다. while(n != 1){ arr.push(n); n = (n % 2 == 0) ? n / 2 : (3 * n + 1)}; arr.push(1); return arr; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181919 코딩테스트 연습 - 콜라츠 수열 만들기 모든 자연수 x 에 대해서 현재 값이 x 이면 x 가 짝수일 때는 2로 나누고, x 가 홀수일 때는 3 * x + 1 로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x 가 1이 되는지 묻는 문제를 콜라츠 문제라고 부릅니다. 그리고 위 과정에서 거쳐간 모든 수를

JavaScript_코딩테스트 입문_두 수의 곱_school_programmers [내부링크]

JavaScript_코딩테스트 입문_두 수의 곱_school_programmers 풀이 function solution(num1, num2) { // 두 수를 곱해준다. return num1 * num2; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181883 코딩테스트 연습 - 수열과 구간 쿼리 1 정수 배열 arr 와 2차원 정수 배열 queries 이 주어집니다. queries 의 원소는 각각 하나의 query 를 나타내며, [s, e] 꼴입니다. 각 query 마다 순서대로 s ≤ i ≤ e 인 모든 i 에 대해 arr[i] 에 1을 더합니다. 위 규칙에 따라 queries 를 처리한 이후의 arr 를 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ arr 의 길이 ≤ 1,000 0 ≤ arr 의 원소 ≤ 1,000,000 1 ≤ queries 의 길이 ≤ 1,000 0 ≤ s

JavaScript_코딩테스트 입문_몫 구하기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_몫 구하기_school_programmers 풀이 function solution(num1, num2) { // '/' 연산자를 사용하여 나눈 뒤 소수점 이하 값을 절삭한다. return Math.floor(num1/num2); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120805 코딩테스트 연습 - 몫 구하기 문제 설명 정수 num1 , num2 가 매개변수로 주어질 때, num1 을 num2 로 나눈 몫을 return 하도록 solution 함수를 완성해주세요. 제한사항 0 < num1 ≤ 100 0 < num2 ≤ 100 입출력 예 num1 num2 result 10 5 2 7 2 3 입출력 예 설명 입출력 예 #1 num1 이 10, num2 가 5이므로 10을 5로 나눈 몫 2를 return 합니다. 입출력 예 #2 num1 이 7, num2 가 2이므로 7을 2로

JavaScript_코딩테스트 입문_나머지 구하기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_나머지 구하기_school_programmers 풀이 function solution(num1, num2) { // '%' 연산자를 이용하여 나머지 값을 구한다. return num1 % num2; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120810 코딩테스트 연습 - 나머지 구하기 정수 num1 , num2 가 매개변수로 주어질 때, num1 를 num2 로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요. 제한사항 0 < num1 ≤ 100 0 < num2 ≤ 100 입출력 예 num1 num2 result 3 2 1 10 5 0 입출력 예 설명 입출력 예 #1 num1 이 3, num2 가 2이므로 3을 2로 나눈 나머지 1을 return 합니다. 입출력 예 #2 num1 이 10, num2 가 5이므로 10을 5로 나눈 나머지 0을 return

JavaScript_코딩테스트 입문_두 수의 차_school_programmers [내부링크]

JavaScript_코딩테스트 입문_두 수의 차_school_programmers 풀이 function solution(num1, num2) { // '-' 연산자를 이용해서 num1에서 num2를 뺀 값을 반환한다. return num1 - num2; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120803 코딩테스트 연습 - 두 수의 차 문제 설명 정수 num1 과 num2 가 주어질 때, num1 에서 num2 를 뺀 값을 return하도록 soltuion 함수를 완성해주세요. 제한사항 -50000 ≤ num1 ≤ 50000 -50000 ≤ num2 ≤ 50000 입출력 예 num1 num2 result 2 3 -1 100 2 98 입출력 예 설명 입출력 예 #1 num1 이 2이고 num2 가 3이므로 2 - 3 = -1을 return합니다. 입출력 예 #2 num1 이 100이고 num2 가 2이므로 1

JavaScript_코딩테스트 입문_숫자 비교하기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_숫자 비교하기_school_programmers 풀이 function solution(num1, num2) { // 삼항연산자와 '==='를 이용하여 값을 비교한다. return num1 === num2 ? 1 : -1; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120807 코딩테스트 연습 - 숫자 비교하기 정수 num1 과 num2 가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ num1 ≤ 10,000 0 ≤ num2 ≤ 10,000 입출력 예 num1 num2 result 2 3 -1 11 11 1 7 99 -1 입출력 예 설명 입출력 예 설명 #1 num1 이 2이고 num2 가 3이므로 다릅니다. 따라서 -1을 return합니다. 입출력 예 설명 #2 num1 이 11이고 num2

JavaScript_코딩테스트 입문_나이 출력_school_programmers [내부링크]

JavaScript_코딩테스트 입문_나이 출력_school_programmers 풀이 function solution(age) { // 2022 - age + 1값을 반환한다. return 2022 - age + 1; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120820 코딩테스트 연습 - 나이 출력 머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age 가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요. 제한사항 0 < age ≤ 120 나이는 태어난 연도에 1살이며 1년마다 1씩 증가합니다. 입출력 예 age result 40 1983 23 2000 입출력 예 설명 입출력 예 #1 2022년 기준 40살이므로 1983년생입니다. 입출력 예 #2 2022년 기준 23살이므로 2000년생입니다. school.programmers.co.kr

JavaScript_코딩테스트 입문_두 수의 합_school_programmers [내부링크]

JavaScript_코딩테스트 입문_두 수의 합_school_programmers 풀이 function solution(num1, num2) { // num1 + num2 값을 반환한다. return num1 + num2; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120802 코딩테스트 연습 - 두 수의 합 문제 설명 정수 num1 과 num2 가 주어질 때, num1 과 num2 의 합을 return하도록 soltuion 함수를 완성해주세요. 제한사항 -50,000 ≤ num1 ≤ 50,000 -50,000 ≤ num2 ≤ 50,000 입출력 예 num1 num2 result 2 3 5 100 2 102 입출력 예 설명 입출력 예 #1 num1 이 2이고 num2 가 3이므로 2 + 3 = 5를 return합니다. 입출력 예 #2 num1 이 100이고 num2 가 2이므로 100 + 2 = 102를 ret

JavaScript_코딩테스트 입문_두 수의 나눗셈_school_programmers [내부링크]

JavaScript_코딩테스트 입문_두 수의 나눗셈_school_programmers 풀이 function solution(num1, num2) { // Math.floor(num1 / num2 값에 * 100)로 소수점 이하 값을 절삭한다. return Math.floor(num1 / num2 * 1000); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120806 코딩테스트 연습 - 두 수의 나눗셈 정수 num1 과 num2 가 매개변수로 주어질 때, num1 을 num2 로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요. 제한사항 0 < num1 ≤ 100 0 < num2 ≤ 100 입출력 예 num1 num2 result 3 2 1500 7 3 2333 1 16 62 입출력 예 설명 입출력 예 #1 num1 이 3, num2 가 2이므로 3 / 2 =

JavaScript_코딩테스트 입문_각도기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_각도기_school_programmers 풀이 function solution(angle) { // 조건에 맞는 값들을 배열로 만든 뒤, filter를 이용하여 나온 값의 길이를 반환한다. return [0, 90, 91, 180].filter((v) => (angle >= v)).length; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120829 코딩테스트 연습 - 각도기 각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle 이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요. 예각 : 0 < angle < 90 직각 : angle = 90 둔각 : 90 < angle < 180 평각 : angle =

JavaScript_코딩테스트 입문_짝수의 합_school_programmers [내부링크]

JavaScript_코딩테스트 입문_짝수의 합_school_programmers 풀이 function solution(n) { // n은 0보다 큰 값이지만, n = 1 일경우 0을 반환 // n이 1이 아닐 경우 1부터 n까지의 배열에서 나머지가 0인 짝수를 추출, 이후 배열의 모든 값을 더해 반환한다. return n === 1 ? 0 : Array.from({length:n},(v,i) => i + 1).filter((v2) => v2 % 2 == 0).reduce((a,b) => a += b); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120831 코딩테스트 연습 - 짝수의 합 문제 설명 정수 n 이 주어질 때, n 이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요. 제한사항 0 < n ≤ 1000 입출력 예 n result 10 30 4 6 입출력 예 설명 입출력

JavaScript_코딩테스트 입문_배열의 평균값_school_programmers [내부링크]

JavaScript_코딩테스트 입문_배열의 평균값_school_programmers 풀이 function solution(numbers) { // 배열 누산값을 배열 길이로 나눈다. return numbers.reduce((a,b) => {return a + b},0) / numbers.length; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120817 코딩테스트 연습 - 배열의 평균값 정수 배열 numbers 가 매개변수로 주어집니다. numbers 의 원소의 평균값을 return하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ numbers 의 원소 ≤ 1,000 1 ≤ numbers 의 길이 ≤ 100 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다. 입출력 예 numbers result [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 5.5 [89, 90, 91, 9

JavaScript_코딩테스트 입문_양꼬치_school_programmers [내부링크]

JavaScript_코딩테스트 입문_양꼬치_school_programmers 풀이 function solution(n, k) { // 양꼬치 10개를 샀을 경우 음료수 1개를 서비스로 주므로, n을 10로 나눈 몫을 음료수 총 개수에서 제외한다. return Number((12000 * n) + ((k - Math.floor(n / 10)) * 2000)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120830 코딩테스트 연습 - 양꼬치 머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n 과 k 가 매개변수로 주어졌을 때, 양꼬치 n 인분과 음료수 k 개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요. 제한사항 0 < n < 1,000 n / 10 ≤ k < 1,000 서비

JavaScript_코딩테스트 입문_배열 원소의 길이_school_programmers [내부링크]

JavaScript_코딩테스트 입문_배열 원소의 길이_school_programmers 풀이 function solution(strlist) { // 배열 안 요소의 길이를 출력한다. return strlist.map((v)=> v.length); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120854 코딩테스트 연습 - 배열 원소의 길이 문자열 배열 strlist 가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ strlist 원소의 길이 ≤ 100 strlist 는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다. 입출력 예 strlist result ["We", "are", "the", "world!"] [2, 3, 3, 6] ["I", "Love", "Programmers."] [1, 4, 12] 입출력 예

JavaScript_코딩테스트 입문_문자열 뒤집기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_문자열 뒤집기_school_programmers 풀이 function solution(my_string) { // 문자열 -> 배열 -> 배열 요소 반대로 변환 -> 문자열로 합치기 return [...my_string].reverse().join(''); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120822 코딩테스트 연습 - 문자열 뒤집기 문자열 my_string 이 매개변수로 주어집니다. my_string 을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_string 의 길이 ≤ 1,000 입출력 예 my_string return "jaron" "noraj" "bread" "daerb" 입출력 예 설명 입출력 예 #1 my_string 이 "jaron"이므로 거꾸로 뒤집은 "noraj"를 return합니다. 입출력

JavaScript_코딩테스트 입문_배열 뒤집기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_배열 뒤집기_school_programmers 풀이 function solution(num_list) { // reverse()를 이용하여 요소 순서를 반대로 바꾼다. return num_list.reverse(); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120821 코딩테스트 연습 - 배열 뒤집기 정수가 들어 있는 배열 num_list 가 매개변수로 주어집니다. num_list 의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ num_list 의 길이 ≤ 1,000 0 ≤ num_list 의 원소 ≤ 1,000 입출력 예 num_list result [1, 2, 3, 4, 5] [5, 4, 3, 2, 1] [1, 1, 1, 1, 1, 2] [2, 1, 1, 1, 1, 1] [1, 0, 1, 1, 1, 3, 5]

JavaScript_코딩테스트 입문_피자 나눠 먹기 1_school_programmers [내부링크]

JavaScript_코딩테스트 입문_피자 나눠 먹기 1_school_programmers 풀이 function solution(n) { // n이 7이하인경우 1을, 7을 초과했을 경우 n을 7로 나눈다음 올림처리한 값을 반환한다. return n <= 7 ? 1 : Math.ceil(n/7); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120814 코딩테스트 연습 - 피자 나눠 먹기 (1) 머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n 이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요. 제한사항 1 ≤ n ≤ 100 입출력 예 n result 7 1 1 1 15 3 입출력 예 설명 입출력 예 #1 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다. 입출력 예 #2 1명은 최소 한

JavaScript_코딩테스트 입문_머쓱이보다 키 큰 사람_school_programmers [내부링크]

JavaScript_코딩테스트 입문_머쓱이보다 키 큰 사람_school_programmers 풀이 function solution(array, height) { // 배열 요소에서 height보다 큰 값을 필터링한 다음 배열 길이를 반환한다. return array.filter((v) => v > height).length; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120585 코딩테스트 연습 - 머쓱이보다 키 큰 사람 머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array 와 머쓱이의 키 height 가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요. 제한사항 1 ≤ array 의 길이 ≤ 100 1 ≤ height ≤ 200 1 ≤ array 의 원소 ≤ 200 입출력

JavaScript_코딩테스트 입문_중앙값 구하기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_중앙값 구하기_school_programmers 풀이 function solution(array) { // array 배열을 정렬한 다음 가운데 인덱스로 값을 반환한다. return array.sort((a,b) => a - b)[Math.floor(array.length / 2)]; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120811 코딩테스트 연습 - 중앙값 구하기 중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array 가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요. 제한사항 array 의 길이는 홀수입니다. 0 < array 의 길이 < 100 -1,000 < array 의 원소 < 1,000 입출력

JavaScript_코딩테스트 입문_피자 나눠 먹기 3_school_programmers [내부링크]

JavaScript__school_programmers 풀이 function solution(slice, n) { // 나머지가 0인 경우 몫을, 0이 아닌경우 몫 + 1을 출력한다. return n % slice == 0 ? Math.floor(n / slice) : Math.floor(n / slice) + 1; } 다른 풀이 : Math.ceil(n / slice)를 하면 된다. * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120816 코딩테스트 연습 - 피자 나눠 먹기 (3) 머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice 와 피자를 먹는 사람의 수 n 이 매개변수로 주어질 때, n 명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. 제한사항 2 ≤ slice

JavaScript_코딩테스트 입문_짝수 홀수 개수_school_programmers [내부링크]

JavaScript_코딩테스트 입문_짝수 홀수 개수_school_programmers 풀이 function solution(num_list) { // filter를 이용하여 짝수, 홀수 길이를 찾는다. return [num_list.filter((v) => v % 2 == 0).length, num_list.filter((v) => v % 2 == 1).length]; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120824 코딩테스트 연습 - 짝수 홀수 개수 정수가 담긴 리스트 num_list 가 주어질 때, num_list 의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요. 제한사항 1 ≤ num_list 의 길이 ≤ 100 0 ≤ num_list 의 원소 ≤ 1,000 입출력 예 num_list result [1, 2, 3, 4, 5] [2, 3] [1,

하나머니 추천코드 [내부링크]

하나머니 추천코드 : UWF46256E UWF46256E

JavaScript_코딩테스트 입문_최댓값 만들기1_school_programmers [내부링크]

JavaScript_코딩테스트 입문_최댓값 만들기1_school_programmers 풀이 function solution(numbers) { // 내림차순 정렬후, 1,2번째로 큰 수를 찾아서 곱한다. return numbers.sort((a,b) => b - a).filter((v,i) => i < 2).reduce((a2,b2)=>(a2 * b2)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120847 코딩테스트 연습 - 최댓값 만들기(1) 정수 배열 numbers 가 매개변수로 주어집니다. numbers 의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ numbers 의 원소 ≤ 10,000 2 ≤ numbers 의 길이 ≤ 100 입출력 예 numbers result [1, 2, 3, 4, 5] 20 [0, 31, 24, 10,

JavaScript_코딩테스트 입문_아이스 아메리카노_school_programmers [내부링크]

JavaScript_코딩테스트 입문_아이스 아메리카노_school_programmers 풀이 function solution(money) { // Math.floor와 '%' 연산자를 이용하여 출력 return [Math.floor(money / 5500),money % 5500]; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120819 코딩테스트 연습 - 아이스 아메리카노 머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money 가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. 제한사항 0 < money ≤ 1,000,000 입출력 예 money result 5,500 [1, 0] 15,000 [2, 4000] 입출력

JavaScript_코딩테스트 입문_특정 문자 제거하기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_특정 문자 제거하기_school_programmers 풀이 function solution(my_string, letter) { // 문자열을 배열로 만든 다음 letter를 제외한 나머지를 찾아 합친다. return [...my_string].filter((v) => v != letter).join(''); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120826 코딩테스트 연습 - 특정 문자 제거하기 문자열 my_string 과 문자 letter 이 매개변수로 주어집니다. my_string 에서 letter 를 제거한 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_string 의 길이 ≤ 100 letter 은 길이가 1인 영문자입니다. my_string 과 letter 은 알파벳 대소문자로 이루어져 있습니다. 대문자와 소문자를 구분합

JavaScript_코딩테스트 입문_옷가게 할인 받기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_옷가게 할인 받기_school_programmers 풀이 function solution(price) { // 삼항연산자를 이용하여 50만, 30만, 10만, 그 미만의 조건을 찾아 값을 출력한다. return price >= 500000 ? Math.floor(price * 0.8) : price >= 300000 ? Math.floor(price * 0.9) : price >= 100000 ? Math.floor(price * 0.95) : price; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120818 코딩테스트 연습 - 옷가게 할인 받기 문제 설명 머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다. 구매한 옷의 가격 price 가 주어질 때, 지불해야 할 금액을 return 하도록 solution

JavaScript_코딩테스트 입문_순서쌍의 개수_school_programmers [내부링크]

JavaScript_코딩테스트 입문_순서쌍의 개수_school_programmers 풀이 function solution(n) { // 1부터 n까지의 배열을 만든 뒤, n을 요소로 나눴을 때 나머지가 0인 경우의 길이를 출력한다. return Array.from({length: n}, (v, i) => i + 1).filter((v2) => n % v2 == 0).length; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120836 코딩테스트 연습 - 순서쌍의 개수 순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n 이 매개변수로 주어질 때 두 숫자의 곱이 n 인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 1,000,000 입출력 예 n result 20 6 100 9 입출력 예 설명 입출력 예 #1 n

JavaScript_코딩테스트 입문_배열 두 배 만들기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_배열 두 배 만들기_school_programmers 풀이 function solution(numbers) { // 각 배열 요소값 * 2 하여 반환한다. return numbers.map((v) => v * 2); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120809 코딩테스트 연습 - 배열 두 배 만들기 정수 배열 numbers 가 매개변수로 주어집니다. numbers 의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 -10,000 ≤ numbers 의 원소 ≤ 10,000 1 ≤ numbers 의 길이 ≤ 1,000 입출력 예 numbers result [1, 2, 3, 4, 5] [2, 4, 6, 8, 10] [1, 2, 100, -99, 1, 2, 3] [2, 4, 200, -198, 2, 4, 6] 입출력 예

JavaScript_코딩테스트 입문_점의 위치 구하기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_점의 위치 구하기_school_programmers 풀이 function solution(dot) { // dot[0]의 크기 구별로 x의 위치를 구한 뒤 삼항연산자를 이용하여 y의 위치를 구한다. return dot[0] >= 0 ? (dot[1] >= 0 ? 1 : 4) : (dot[1] >= 0 ? 2 : 3); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120841 코딩테스트 연습 - 점의 위치 구하기 사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다. x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다. x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다. x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다. x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다. x 좌표 (x,

하나머니 추천코드 [내부링크]

하나머니 추천코드 UWF46256E UWF46256E

JavaScript_코딩테스트 입문_중복된 숫자 개수_school_programmers [내부링크]

JavaScript_코딩테스트 입문_중복된 숫자 개수_school_programmers 풀이 function solution(array, n) { // n을 갖고 있는 배열 길이를 반환한다. return array.filter(i => i === n).length; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120583 코딩테스트 연습 - 중복된 숫자 개수 정수가 담긴 배열 array 와 정수 n 이 매개변수로 주어질 때, array 에 n 이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요. 제한사항 1 ≤ array 의 길이 ≤ 100 0 ≤ array 의 원소 ≤ 1,000 0 ≤ n ≤ 1,000 입출력 예 array n result [1, 1, 2, 3, 4, 5] 1 2 [0, 2, 3, 4] 1 0 입출력 예 설명 입출력 예 #1 [1, 1, 2, 3, 4, 5] 에는 1이

JavaScript_코딩테스트 입문_배열 자르기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_배열 자르기_school_programmers 풀이 function solution(numbers, num1, num2) { // filter를 이용하여 배열 index를 두 매개변수로 자른 배열을 반환한다. return numbers.filter((v,i) => (i >= num1 && i <= num2)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120833 코딩테스트 연습 - 배열 자르기 정수 배열 numbers 와 정수 num1 , num2 가 매개변수로 주어질 때, numbers 의 num1 번 째 인덱스부터 num2 번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요. 제한사항 2 ≤ numbers 의 길이 ≤ 30 0 ≤ numbers 의 원소 ≤ 1,000 0 ≤ num1 < num2 < numbers 의 길이 입출력 예

JavaScript_코딩테스트 입문_모음 제거_school_programmers [내부링크]

JavaScript_코딩테스트 입문_모음 제거_school_programmers 풀이 function solution(my_string) { // replace를 이용하여 정규식(영문 모음 제거)로 문자를 지운다. return my_string.replace(/a|e|i|o|u/gi,''); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120849 코딩테스트 연습 - 모음 제거 영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string 이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 my_string 은 소문자와 공백으로 이루어져 있습니다. 1 ≤ my_string 의 길이 ≤ 1,000 입출력 예 my_string result "bus" "bs" "nice to meet you" "nc t mt y" 입출력

JavaScript_코딩테스트 입문_문자 반복 출력하기_school_programmers [내부링크]

JavaScript_코딩테스트 입문_문자 반복 출력하기_school_programmers 풀이 function solution(my_string, n) { // 문자열을 문자배열로 변환한다음, map을 이용하여 해당 문자를 n번 반복한 뒤 합친다. return [...my_string].map((v) => v.repeat(n) ).join(''); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120825 코딩테스트 연습 - 문자 반복 출력하기 문자열 my_string 과 정수 n 이 매개변수로 주어질 때, my_string 에 들어있는 각 문자를 n 만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요. 제한사항 2 ≤ my_string 길이 ≤ 5 2 ≤ n ≤ 10 "my_string"은 영어 대소문자로 이루어져 있습니다. 입출력 예 my_string n result "hello" 3

JavaScript_코딩테스트 입문_숨어있는 숫자의 덧셈 1_school_programmers [내부링크]

JavaScript_코딩테스트 입문_숨어있는 숫자의 덧셈 1_school_programmers 풀이 function solution(my_string) { // 문자중 숫자 문자를 추출한 다음, 해당 문자들을 숫자로 변환하여 총합을 구한다. return [...my_string].filter((x) => parseInt(x)).map(Number).reduce((a,b) => a += b); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120851 코딩테스트 연습 - 숨어있는 숫자의 덧셈 (1) 문자열 my_string 이 매개변수로 주어집니다. my_string 안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_string 의 길이 ≤ 1,000 my_string 은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다. 입출력 예 my_string re

JavaScript_코딩테스트 입문_짝수는 싫어요_school_programmers [내부링크]

JavaScript_코딩테스트 입문_짝수는 싫어요_school_programmers 풀이 function solution(n) { // 정수 n까지의 숫자 배열을 오름차순으로 정렬한 다음 n이하의 홀수값을 추출한다. // 사실 sort부분은 지워도 된다. return Array.from({ length: n }, (_, i) => 1 + i ).sort((a,b) => a > b).filter((x) => x <= n && x % 2 == 1); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/120813 코딩테스트 연습 - 짝수는 싫어요 정수 n 이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 100 입출력 예 n result 10 [1, 3, 5, 7, 9] 15 [1, 3, 5, 7, 9, 11, 13, 15]

JavaScript_코딩 기초 트레이닝_첫 번째로 나오는 음수_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_첫 번째로 나오는 음수_school_programmers 풀이 function solution(num_list) { // findIndex로 음수 조건을 넣은 인덱스를 반환한다. return num_list.findIndex((v) => v < 0); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181896 코딩테스트 연습 - 첫 번째로 나오는 음수 정수 리스트 num_list 가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다. 제한사항 5 ≤ num_list 의 길이 ≤ 100 -10 ≤ num_list 의 원소 ≤ 100 입출력 예 num_list result [12, 4, 15, 46, 38, -2, 15] 5 [13, 22, 53, 24, 15, 6] -1 입출력 예 설명

JavaScript_코딩 기초 트레이닝_문자열로 변환_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열로 변환_school_programmers 풀이 function solution(n) { // 숫자를 문자열로 변환하여 반환한다. return n.toString(); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181845 코딩테스트 연습 - 문자열로 변환 문제 설명 정수 n 이 주어질 때, n 을 문자열로 변환하여 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 10000 입출력 예 n result 123 "123" 2573 "2573" 입출력 예 설명 입출력 예 #1 123을 문자열로 변환한 "123"을 return합니다. 입출력 예 #2 2573을 문자열로 변환한 "2573"을 return합니다. school.programmers.co.kr

JavaScript_코딩 기초 트레이닝_배열 비교하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_배열 비교하기_school_programmers 풀이 function solution(arr1, arr2) { // 각 배열의 총합을 구한다. const num1 = arr1.reduce((a,b) => a += b); const num2 = arr2.reduce((a,b) => a += b); // 첫번째 길이 비교 후 길이가 같을 경우 합계를 비교한다. return arr1.length > arr2.length ? 1 : arr1.length < arr2.length ? -1 : (num1 > num2 ? 1 : (num1 < num2 ? -1 : 0)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181856 코딩테스트 연습 - 배열 비교하기 이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다. 두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다

JavaScript_코딩 기초 트레이닝_정수 부분_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_정수 부분_school_programmers 풀이 function solution(flo) { // 소수점 버림을 이용한 풀이법 return Math.floor(flo); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181850 코딩테스트 연습 - 정수 부분 문제 설명 실수 flo 가 매개 변수로 주어질 때, flo 의 정수 부분을 return하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ flo ≤ 100 입출력 예 flo result 1.42 1 69.32 69 입출력 예 설명 입출력 예 #1 1.42의 정수 부분은 1입니다. 입출력 예 #2 69.32의 정수 부분은 69입니다. school.programmers.co.kr

JavaScript_코딩 기초 트레이닝_부분 문자열인지 확인하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_부분 문자열인지 확인하기_school_programmers 풀이 function solution(my_string, target) { // 문자를 포함할 경우 해당 인덱스를 출력하는 방식을 이용한다. return my_string.indexOf(target) > -1 ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181843 코딩테스트 연습 - 부분 문자열인지 확인하기 부분 문자열이란 문자열에서 연속된 일부분에 해당하는 문자열을 의미합니다. 예를 들어, 문자열 "ana", "ban", "anana", "banana", "n"는 모두 문자열 "banana"의 부분 문자열이지만, "aaa", "bnana", "wxyz"는 모두 "banana"의 부분 문자열이 아닙니다. 문자열 my_string 과 target 이 매개변수로 주어질 때, target 이 문자열 my

JavaScript_코딩 기초 트레이닝_문자열을 정수로 변환하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열을 정수로 변환하기_school_programmers 풀이 function solution(n_str) { // 문자열에 숫자를 곱해서 숫자로 반환한다. return n_str * 1; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181848 코딩테스트 연습 - 문자열을 정수로 변환하기 문제 설명 숫자로만 이루어진 문자열 n_str 이 주어질 때, n_str 을 정수로 변환하여 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n_str ≤ 5 n_str 은 0부터 9까지의 정수 문자로만 이루어져 있습니다. 입출력 예 n_str result "10" 10 "8542" 8542 입출력 예 설명 입출력 예 #1 "10"을 정수로 바꾸면 10입니다. 입출력 예 #2 "8542"를 정수로 바꾸면 8542입니다. school.programmers.co.kr

JavaScript_코딩 기초 트레이닝_문자열의 앞의 n글자_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열의 앞의 n글자_school_programmers 풀이 function solution(my_string, n) { // 문자열의 인덱스를 이용하여 특정 구간의 문자열을 반환한다. return my_string.substring(0,n); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181907 코딩테스트 연습 - 문자열의 앞의 n글자 문자열 my_string 과 정수 n 이 매개변수로 주어질 때, my_string 의 앞의 n 글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요. 제한사항 my_string 은 숫자와 알파벳으로 이루어져 있습니다. 1 ≤ my_string 의 길이 ≤ 1,000 1 ≤ n ≤ my_string 의 길이 입출력 예 my_string n result "ProgrammerS123" 11 "ProgrammerS"

JavaScript_코딩 기초 트레이닝_소문자로 바꾸기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_소문자로 바꾸기_school_programmers 풀이 function solution(myString) { // 모든 영문자를 소문자로 변환하는 방법 return myString.toLowerCase(); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181876 코딩테스트 연습 - 소문자로 바꾸기 문제 설명 알파벳으로 이루어진 문자열 myString 이 주어집니다. 모든 알파벳을 소문자로 변환하여 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ myString 의 길이 ≤ 100,000 myString 은 알파벳으로 이루어진 문자열입니다. 입출력 예 myString result "aBcDeFg" "abcdefg" "aaa" "aaa" school.programmers.co.kr

JavaScript_코딩 기초 트레이닝_대문자로 바꾸기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_대문자로 바꾸기_school_programmers 풀이 function solution(myString) { // 모든 영문자를 대문자로 바꾸는 방법 return myString.toUpperCase(); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181877 코딩테스트 연습 - 대문자로 바꾸기 문제 설명 알파벳으로 이루어진 문자열 myString 이 주어집니다. 모든 알파벳을 대문자로 변환하여 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ myString 의 길이 ≤ 100,000 myString 은 알파벳으로 이루어진 문자열입니다. 입출력 예 myString result "aBcDeFg" "ABCDEFG" "AAA" "AAA" school.programmers.co.kr

JavaScript_코딩 기초 트레이닝_rny_string_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_rny_string_school_programmers 풀이 function solution(rny_string) { // replaceAll 이용하여 모든 'm'을 'rn'으로 변환한다. return rny_string.replaceAll('m',"rn"); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181863 코딩테스트 연습 - rny_string 'm'과 "rn"이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 rny_string 이 주어질 때, rny_string 의 모든 'm'을 "rn"으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ rny_string 의 길이 ≤ 100 rny_string 은 영소문자로만 이루어져 있습니다. 입출력 예 rny_string result "masterpiece"

JavaScript_코딩 기초 트레이닝_접두사인지 확인하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_접두사인지 확인하기_school_programmers 풀이 function solution(my_string, is_prefix) { // 특정 문자 기준으로 배열화한뒤, 첫번째 요소가 ""인 경우 1을, 아니면 0을 반환한다. return ((my_string.split(is_prefix))[0]) === "" ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181906 코딩테스트 연습 - 접두사인지 확인하기 어떤 문자열에 대해서 접두사는 특정 인덱스까지의 문자열을 의미합니다. 예를 들어, "banana"의 모든 접두사는 "b", "ba", "ban", "bana", "banan", "banana"입니다. 문자열 my_string 과 is_prefix 가 주어질 때, is_prefix 가 my_string 의 접두사라면 1을, 아니면 0을 return 하는 s

JavaScript_코딩 기초 트레이닝_조건에 맞게 수열 변환하기 3_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_조건에 맞게 수열 변환하기 3_school_programmers 풀이 function solution(arr, k) { // 정수 배열에서 k 값의 나머지 유무를 활용하여 푼 문제 return arr.map((v) => k % 2 == 1 ? v * k : v + k); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181835 코딩테스트 연습 - 조건에 맞게 수열 변환하기 3 문제 설명 정수 배열 arr 와 자연수 k 가 주어집니다. 만약 k 가 홀수라면 arr 의 모든 원소에 k 를 곱하고, k 가 짝수라면 arr 의 모든 원소에 k 를 더합니다. 이러한 변환을 마친 후의 arr 를 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ arr 의 길이 ≤ 1,000,000 1 ≤ arr 의 원소의 값 ≤ 100 1 ≤ k ≤ 100 입출력 예 arr k

JavaScript_코딩 기초 트레이닝_정수 찾기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_정수 찾기_school_programmers 풀이 function solution(num_list, n) { // 배열 요소 중 n이 있을 경우 인덱스를 반환한다. return num_list.indexOf(n) > -1 ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181840 코딩테스트 연습 - 정수 찾기 정수 리스트 num_list 와 찾으려는 정수 n 이 주어질 때, num_list 안에 n 이 있으면 1을 없으면 0을 return하도록 solution 함수를 완성해주세요. 제한사항 3 ≤ num_list 의 길이 ≤ 100 1 ≤ num_list 의 원소 ≤ 100 1 ≤ n ≤ 100 입출력 예 num_list n result [1, 2, 3, 4, 5] 3 1 [15, 98, 23, 2, 15] 20 0 입출력 예 설명 입출력 예 #1 [1, 2,

JavaScript_코딩 기초 트레이닝_배열에서 문자열 대소문자 변환하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_배열에서 문자열 대소문자 변환하기_school_programmers 풀이 function solution(strArr) { // map을 이용한 풀이법 return strArr.map((v,i) => i % 2 == 1 ? v.toUpperCase() : v.toLowerCase()); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181875 코딩테스트 연습 - 배열에서 문자열 대소문자 변환하기 문자열 배열 strArr 가 주어집니다. 모든 원소가 알파벳으로만 이루어져 있을 때, 배열에서 홀수번째 인덱스의 문자열은 모든 문자를 대문자로, 짝수번째 인덱스의 문자열은 모든 문자를 소문자로 바꿔서 반환하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ strArr ≤ 20 1 ≤ strArr 의 원소의 길이 ≤ 20 strArr 의 원소는 알파벳으로 이루어진 문자열 입니

SQL_LeetCode_577_Employee Bonus [내부링크]

SQL_LeetCode_577_Employee Bonus 풀이 -- ORACLE, MYSQL, MSSQL SELECT E.NAME, B.BONUS FROM EMPLOYEE E LEFT OUTER JOIN BONUS B ON E.EMPID = B.EMPID WHERE B.BONUS < 1000 OR B.BONUS IS NULL; * 출처 https://leetcode.com/problems/employee-bonus/ Employee Bonus - LeetCode Can you solve this real interview question? Employee Bonus - Table: Employee +-------------+---------+ | Column Name | Type | +-------------+---------+ | empId | int | | name | varchar | | supervisor | int | | salary | int | +-------------

SQL_LeetCode_550_Game Play Analysis IV [내부링크]

SQL_LeetCode_550_Game Play Analysis IV 풀이 -- ORACLE SELECT ROUND(COUNT(A2.PLAYER_ID) / COUNT(A.PLAYER_ID),2) AS fraction FROM ACTIVITY A LEFT OUTER JOIN ACTIVITY A2 ON A.PLAYER_ID = A2.PLAYER_ID AND A2.EVENT_DATE = A.EVENT_DATE + 1 WHERE (A.PLAYER_ID, A.EVENT_DATE) IN ( SELECT PLAYER_ID, MIN(EVENT_DATE) FROM ACTIVITY GROUP BY PLAYER_ID ) -- MYSQL SELECT ROUND(COUNT(DISTINCT A.PLAYER_ID) / (SELECT COUNT(DISTINCT PLAYER_ID) FROM ACTIVITY),2) AS fraction FROM ACTIVITY A WHERE CONCAT(A.PLAYER_ID, A.

JavaScript_코딩 기초 트레이닝_n보다 커질 때까지 더하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_n보다 커질 때까지 더하기_school_programmers 풀이 function solution(numbers, n) { // 누적값과 n을 비교하여 조건에 맞을 경우 누적값을 반환한다. return numbers.reduce((a,b) => n >= a ? (a += b) : a ); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181884 코딩테스트 연습 - n보다 커질 때까지 더하기 제한사항 1 ≤ numbers 의 길이 ≤ 100 1 ≤ numbers 의 원소 ≤ 100 0 ≤ n < numbers 의 모든 원소의 합 입출력 예 numbers n result [34, 5, 71, 29, 100, 34] 123 139 [58, 44, 27, 10, 100] 139 239 입출력 예 설명 school.programmers.co.kr

JavaScript_코딩 기초 트레이닝_n 번째 원소까지_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_n 번째 원소까지_school_programmers 풀이 function solution(num_list, n) { // filter의 index를 이용한다. return num_list.filter((v,i) => (i+1) <= n); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181889 코딩테스트 연습 - n 번째 원소까지 정수 리스트 num_list 와 정수 n 이 주어질 때, num_list 의 첫 번째 원소부터 n 번째 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ num_list 의 길이 ≤ 30 1 ≤ num_list 의 원소 ≤ 9 1 ≤ n ≤ num_list 의 길이 ___ 입출력 예 num_list n result [2, 1, 6] 1 [2] [5, 2, 1, 7, 5] 3 [5, 2,

JavaScript_코딩 기초 트레이닝_문자열의 뒤의 n글자_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열의 뒤의 n글자_school_programmers 풀이 function solution(my_string, n) { // slice를 이용, 문자열 길이에서 'n'을 뺀 값부터 문자열 길이를 매개변수로 줄 경우 문자열 뒤부터 n글자로 이뤄진 문자열을 반환한다. return my_string.slice(my_string.length-n,my_string.length); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181910 코딩테스트 연습 - 문자열의 뒤의 n글자 문자열 my_string 과 정수 n 이 매개변수로 주어질 때, my_string 의 뒤의 n 글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요. 제한사항 my_string 은 숫자와 알파벳으로 이루어져 있습니다. 1 ≤ my_string 의 길이 ≤ 1,000 1 ≤ n ≤ m

JavaScript_코딩 기초 트레이닝_문자열 정수의 합_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 정수의 합_school_programmers 풀이 function solution(num_str) { // 문자열을 문자 배열로 변환한다음, 해당 문자를 숫자로 변환 후 숫자들의 누적값을 반환한다. return [...num_str].map(Number).reduce((a,b) => a += b); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181849 코딩테스트 연습 - 문자열 정수의 합 문제 설명 한 자리 정수로 이루어진 문자열 num_str 이 주어질 때, 각 자리수의 합을 return하도록 solution 함수를 완성해주세요. 제한사항 3 ≤ num_str ≤ 100 입출력 예 num_str result "123456789" 45 "1000000" 1 입출력 예 설명 입출력 예 #1 문자열 안의 모든 숫자를 더하면 45가 됩니다. 입출력 예 #2 문자열 안의

JavaScript_코딩 기초 트레이닝_조건에 맞게 수열 변환하기 1_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_조건에 맞게 수열 변환하기 1_school_programmers 풀이 function solution(arr) { // 삼항연산자와 map을 이용하여 푼 문제이다. return arr.map((v) => v = (v >= 50 && v % 2 == 0 ? v / 2 : (v < 50 && v % 2 == 1) ? v * 2 : v)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181882 코딩테스트 연습 - 조건에 맞게 수열 변환하기 1 정수 배열 arr 가 주어집니다. arr 의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱합니다. 그 결과인 정수 배열을 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ arr 의 길이 ≤ 1,000,000 1 ≤ arr 의 원소의 값 ≤ 100 입출력 예 ar

JavaScript_코딩 기초 트레이닝_길이에 따른 연산_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_길이에 따른 연산_school_programmers 풀이 function solution(num_list) { // reduce를 이용한 풀이법 return num_list.length <= 10 ? num_list.reduce((a,b) => a *= b) : num_list.reduce((a,b) => a += b); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181879 코딩테스트 연습 - 길이에 따른 연산 정수가 담긴 리스트 num_list 가 주어질 때, 리스트의 길이가 11 이상이면 리스트에 있는 모든 원소의 합을 10 이하이면 모든 원소의 곱을 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ num_list 의 길이 ≤ 20 1 ≤ num_list 의 원소 ≤ 9 입출력 예 num_list result [3, 4, 5, 2, 5, 4,

JavaScript_코딩 기초 트레이닝_부분 문자열_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_부분 문자열_school_programmers 풀이 function solution(str1, str2) { // str2에 str1의 인덱스를 반환하는 방법을 이용한다. return str2.indexOf(str1) > -1 ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181842 코딩테스트 연습 - 부분 문자열 어떤 문자열 A가 다른 문자열 B안에 속하면 A를 B의 부분 문자열이라고 합니다. 예를 들어 문자열 "abc"는 문자열 "aabcc"의 부분 문자열입니다. 문자열 str1 과 str2 가 주어질 때, str1 이 str2 의 부분 문자열이라면 1을 부분 문자열이 아니라면 0을 return하도록 solution 함수를 완성해주세요. 제한 사항 1 ≤ str1 ≤ str2 ≤ 20 str1 과 str2 는 영어 소문자로만 이루어져 있습니다. 입출력 예

JavaScript_코딩 기초 트레이닝_배열 만들기 1_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_배열 만들기 1_school_programmers 풀이 function solution(n, k) { // 0부터 n - 1까지의 배열을 만든 다음 map의 index를 이용하여 요소를 채우고, 요소값이 k배수일 경우 반환한다. return Array(n).fill().map((v,i) => i+1).filter((v) => v % k == 0); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181901 코딩테스트 연습 - 배열 만들기 1 정수 n 과 k 가 주어졌을 때, 1 이상 n 이하의 정수 중에서 k 의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ n ≤ 1,000,000 1 ≤ k ≤ min(1,000, n) 입출력 예 n k result 10 3 [3, 6, 9] 15 5 [5, 10, 15] 입출력

JavaScript_코딩 기초 트레이닝_꼬리 문자열_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_꼬리 문자열_school_programmers 풀이 function solution(str_list, ex) { // 요소에서 ex를 찾을 수 없는 경우 -1을 반환하는 indexOf와 join을 이용하여 배열요소를 문자열로 합친다. return str_list.filter((v) => v.indexOf(ex) == -1).join(""); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181841?language=javascript 코딩테스트 연습 - 꼬리 문자열 문자열들이 담긴 리스트가 주어졌을 때, 모든 문자열들을 순서대로 합친 문자열을 꼬리 문자열이라고 합니다. 꼬리 문자열을 만들 때 특정 문자열을 포함한 문자열은 제외시키려고 합니다. 예를 들어 문자열 리스트 ["abc", "def", "ghi"]가 있고 문자열 "ef"를 포함한 문자열은 제외하고 꼬리 문자열을 만들면

JavaScript_코딩 기초 트레이닝_문자열 잘라서 정렬하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 잘라서 정렬하기_school_programmers 풀이 function solution(myString) { // "x"를 기준으로 나눴을 때 공백부분을 제거해준 뒤 정렬한다. return myString.split("x").filter(v=> v != "").sort(); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181866 코딩테스트 연습 - 문자열 잘라서 정렬하기 문자열 myString 이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 빈 문자열은 반환할 배열에 넣지 않습니다. 제한사항 1 ≤ myString ≤ 100,000 myString 은 알파벳 소문자로 이루어진 문자열입니다. 입출력 예 myString result "axbxcxdx" ["a"

JavaScript_코딩 기초 트레이닝_특별한 이차원 배열 1_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_특별한 이차원 배열 1_school_programmers 풀이 // map문을 사용하여 푼 방식 function solution(n) { // 배열 안에 배열을 만든뒤 0으로 채운다. const arr = Array(n).fill(Array(n).fill(0)); // map을 이용하여 1차원 배열 값을 반환하여 2차원 배열에 세팅해준 다음 2차원 배열을 반환한다. return arr.map((v, i) => { return v.map((v2,i2) => v2 = i == i2 ? 1 : 0); }); } // for문을 사용하여 푼 방식 function solution(n) { // 배열 안에 배열을 만든뒤 0으로 채운다. const arr = Array.from(Array(n), () => Array(n).fill(0)); for(var i = 0; i <n ; i++){ arr[i][i] = 1 } return arr; } 배열 안에 배열

JavaScript_코딩 기초 트레이닝_마지막 두 원소_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_마지막 두 원소_school_programmers 풀이 function solution(num_list) { // 마지막 원소, 그 전 원소만 비교하여 조건에 맞춰 마지막 원소로 추가한다. num_list.push(num_list[num_list.length-1] > num_list[num_list.length-2] ? num_list[num_list.length-1] - num_list[num_list.length-2] : num_list[num_list.length-1] * 2 ); return num_list; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181927 코딩테스트 연습 - 마지막 두 원소 정수 리스트 num_list 가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소

JavaScript_코딩 기초 트레이닝_수 조작하기 1_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_수 조작하기 1_school_programmers 풀이 function solution(n, control) { // filter를 이용, 조건에 맞춰서 값을 계산해준다. return n + [...control].filter(v => v == "w").length - [...control].filter(v => v == "s").length + 10 * [...control].filter(v => v == "d").length - (10 * [...control].filter(v => v == "a").length); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181926 코딩테스트 연습 - 수 조작하기 1 정수 n 과 문자열 control 이 주어집니다. control 은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control 의 앞에서부터

캐시워크 추천코드 [내부링크]

캐시워크 추천코드 KR4X2PP

더쎈카드 추천코드 [내부링크]

더쎈카드 추천코드 6gwPLSkW

화해 추천코드 [내부링크]

화해 추천코드 XA7RNT1DA4

토스 추천코드 [내부링크]

토스 추천코드 7034694171 70346 94171

JavaScript_코딩 기초 트레이닝_조건 문자열_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_조건 문자열_school_programmers 풀이 function solution(ineq, eq, n, m) { // eval을 이용하여 푼 문제 // 사실 보안상 권장하지 않음 return Number(eval(n + ineq + (eq != '!' ? '=' : '') + m)); } 개인적으로, eval() 사용을 권장하진 않는다. * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181934 코딩테스트 연습 - 조건 문자열 문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다. 두 수가 n 과 m 이라면 ">", "=" : n >= m "<", "=" : n <= m ">", "!" : n > m "<", "!" : n < m 두 문자열 ineq 와 eq 가 주어집니다. ineq 는 "<"와 ">"중 하나고, eq 는 "="와 "!"중 하나입니다. 그리고 두 정수

JavaScript_코딩 기초 트레이닝_flag에 따라 다른 값 반환하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_flag에 따라 다른 값 반환하기_school_programmers 풀이 function solution(a, b, flag) { // 삼항연산자로 논리값에 따라 계산한 뒤 반환 return flag ? a + b : a - b; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181933 코딩테스트 연습 - flag에 따라 다른 값 반환하기 두 정수 a , b 와 boolean 변수 flag 가 매개변수로 주어질 때, flag 가 true면 a + b 를 false면 a - b 를 return 하는 solution 함수를 작성해 주세요. 제한사항 -1000 ≤ a , b ≤ 1,000 입출력 예 a b flag result -4 7 true 3 -4 7 false -11 입출력 예 입출력 예 #1 예제 1번에서 flag 가 true이므로 a + b = (-4) + 7 = 3을

JavaScript_코딩 기초 트레이닝_코드 처리하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_코드 처리하기_school_programmers 풀이 function solution(code) { let str = ""; let mode = 0; [...code].map((val, idx) => { // mode 조건 적용 if(val == "1" && mode == 0) mode = 1; else if(val == "1" && mode == 1) mode = 0; // 위에 따라 나온 값 판별 후 1이 아닐 경우 더하기 if((mode == 0 && idx % 2 == 0 ) || (mode == 1 && (idx % 2 == 1)) ){ str += val != "1" ? val : ""; } }); // 만약 빈 문자열일 경우 "EMPTY"를 출력 return str == "" ? "EMPTY" : str; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181932

JavaScript_코딩 기초 트레이닝_등차수열의 특정한 항만 더하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_등차수열의 특정한 항만 더하기_school_programmers 풀이 function solution(a, d, included) { // 등차수열 공식 : a의 N번째 값은 a + (n - 1)d 값이다.(a가 첫번째 값, d는 공차) let arr = new Array(), cnt = 0; // i번째에 해당하는 값이 i+1항의 값을 의미한다고 하여 n번째 값에 n-1이 아닌 n을 d에 곱해준다. included.map((idx,val) => { if(idx) arr[cnt++] = a + (val * d); }); // 모든 수 더해주기 return arr.reduce((a,b) => (a+b)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181931 코딩테스트 연습 - 등차수열의 특정한 항만 더하기 두 정수 a , d 와 길이가 n인 boolean 배열 inclu

JavaScript_코딩 기초 트레이닝_주사위 게임 2_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_주사위 게임 2_school_programmers 풀이 function solution(a, b, c) { // 값 세팅 const arr = [a,b,c]; const res1 = a + b + c; const res2 = (Math.pow(a,2) + Math.pow(b,2) + Math.pow(c,2)); const res3 = (Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3)); let cnt = 0, res = 0; // 배열 필터로 같은 값을 확인 // 모두 다른 경우 -> 3 / 2개만 같다면 -> 5 / 모두 같은 경우 -> 9를 반환 arr.filter((val) => arr.filter((val2) =>{ cnt += val == val2 ? 1 : 0; })); res = cnt == 3 ? res1 : Math.floor(cnt / 3) == 1 ? res1 * res2 : res1 * r

JavaScript_코딩 기초 트레이닝_원소들의 곱과 합_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_원소들의 곱과 합_school_programmers 풀이 function solution(num_list) { let res1 = 0, res2 = 1, cnt = 0; // 모든 원소들의 합, 곱을 구한다. while(cnt++ < 2) num_list.map((num) => { cnt == 1 ? res1 += num : res2 *= num } ); // 모든 원소들의 합의 제곱과 곱을 비교하여 값을 출력 return Math.pow(res1,2) > res2 ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181929 코딩테스트 연습 - 원소들의 곱과 합 정수가 담긴 리스트 num_list 가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ num_

JavaScript_코딩 기초 트레이닝_이어 붙인 수_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_이어 붙인 수_school_programmers 풀이 function solution(num_list) { // 문자열에 정수를 붙이기 위해 문자열 배열 생성 const arr = ["",""]; // 홀수일경우 arr[0]에, 짝수일경우 arr[1]에 넣는다. num_list.map((val) => {val % 2 == 1 ? arr[0] += val : arr[1] += val}); // 문자열을 다시 수로 변환하면 끝 return Number(arr[0]) + Number(arr[1]); } 풀고 나서 join("")을 미쳐 생각못한걸 뒤늦게 알았다.. * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181928 코딩테스트 연습 - 이어 붙인 수 정수가 담긴 리스트 num_list 가 주어집니다. num_list 의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인

JavaScript_코딩 기초 트레이닝_n개 간격의 원소들_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_n개 간격의 원소들_school_programmers 풀이 function solution(num_list, n) { // filter로 인덱스 / n = 0일때 반환한다. return num_list.filter((val,idx) => idx % n == 0 ) ; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181888 코딩테스트 연습 - n개 간격의 원소들 정수 리스트 num_list 와 정수 n 이 주어질 때, num_list 의 첫 번째 원소부터 마지막 원소까지 n 개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요. 제한사항 5 ≤ num_list 의 길이 ≤ 20 1 ≤ num_list 의 원소 ≤ 9 1 ≤ n ≤ 4 입출력 예 num_list n result [4, 2, 6, 1, 7, 6] 2 [4,

JavaScript_코딩 기초 트레이닝_문자열 겹쳐쓰기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 겹쳐쓰기_school_programmers 풀이 function solution(my_string, overwrite_string, s) { var str = ""; // 문자열 -> 배열화 -> 반복문으로 value , index를 추출 // index의 범위를 지정하여 조건에 맞춰 값 추가 [...my_string].forEach((k,v) => {str += (v < s || v >= [...overwrite_string].length + s ) ? k : [...overwrite_string][v-s]}); return str; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181943 코딩테스트 연습 - 문자열 겹쳐쓰기 문자열 my_string , overwrite_string 과 정수 s 가 주어집니다. 문자열 my_string 의 인덱스 s 부터 overw

JavaScript_코딩 기초 트레이닝_문자열 섞기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 섞기_school_programmers 풀이 function solution(str1, str2) { let str = ""; // 문자열 -> 배열 -> 반복문 -> 문자(str1) + 다른 문자열(str2)의 문자 하나씩 더하기 [...str1].forEach((k,v) => {str += k + [...str2][v]}); return str; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181942 코딩테스트 연습 - 문자열 섞기 문제 설명 길이가 같은 두 문자열 str1 과 str2 가 주어집니다. 두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ str1 의 길이 = str2 의 길이 ≤ 10 str1 과 str2 는 알파벳 소문자로 이루어진 문자열

JavaScript_코딩 기초 트레이닝_문자 리스트를 문자열로 변환하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자 리스트를 문자열로 변환하기_school_programmers 풀이 function solution(arr) { // 배열 -> join 합치기 return arr.join(''); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181941 코딩테스트 연습 - 문자 리스트를 문자열로 변환하기 문제 설명 문자들이 담겨있는 배열 arr 가 주어집니다. arr 의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요. 제한사항 1 ≤ arr 의 길이 ≤ 200 arr 의 원소는 전부 알파벳 소문자로 이루어진 길이가 1인 문자열입니다. 입출력 예 arr result ["a","b","c"] "abc" school.programmers.co.kr

JavaScript_코딩 기초 트레이닝_문자열 곱하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 곱하기_school_programmers 풀이 function solution(my_string, k) { // repeat(반복횟수)를 이용한 문제 return my_string.repeat(k); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181940 코딩테스트 연습 - 문자열 곱하기 문자열 my_string 과 정수 k 가 주어질 때, my_string 을 k 번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ my_string 의 길이 ≤ 100 my_string 은 영소문자로만 이루어져 있습니다. 1 ≤ k ≤ 100 입출력 예 my_string k result "string" 3 "stringstringstring" "love" 10 "lovelovelovelovelovelovelovelovelovelove" 입출

JavaScript_코딩 기초 트레이닝_더 크게 합치기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_더 크게 합치기_school_programmers 풀이 function solution(a, b) { // String(정수)를 통해 문자열로 변환 이후 비교 시 더 큰 값을 확인하여 값을 Number()로 정수 변환 return String(a) + String(b) > String(b) + String(a) ? Number(String(a) + String(b)) : Number(String(b) + String(a)); } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181939 코딩테스트 연습 - 더 크게 합치기 문제 설명 연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다. 12 ⊕ 3 = 123 3 ⊕ 12 = 312 양의 정수 a 와 b 가 주어졌을 때, a ⊕ b 와 b ⊕ a 중 더 큰 값을 return 하는 s

JavaScript_코딩 기초 트레이닝_두 수의 연산값 비교하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_두 수의 연산값 비교하기_school_programmers 풀이 function solution(a, b) { // `${변수명}`을 통해 문자열로 만들 수 있다. // a ⊕ b의 값과 2 * a * b 값을 비교, 만약 a ⊕ b가 크거나 같을 경우 a ⊕ b의 정수형을 반환한다. return `${a}${b}` >= 2 * a * b ? Number(`${a}${b}`) : 2 * a * b; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181938 코딩테스트 연습 - 두 수의 연산값 비교하기 문제 설명 연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다. 12 ⊕ 3 = 123 3 ⊕ 12 = 312 양의 정수 a 와 b 가 주어졌을 때, a ⊕ b 와 2 * a * b 중 더 큰 값을 return하는 solution

JavaScript_코딩 기초 트레이닝_n의 배수_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_n의 배수_school_programmers 풀이 function solution(num, n) { // num을 n으로 나눴을 때 나머지가 0일 경우 1을 반환한다. return num % n == 0 ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181937 코딩테스트 연습 - n의 배수 정수 num 과 n 이 매개 변수로 주어질 때, num 이 n 의 배수이면 1을 return n 의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ num ≤ 100 2 ≤ n ≤ 9 입출력 예 num n result 98 2 1 34 3 0 입출력 예 설명 입출력 예 #1 98은 2의 배수이므로 1을 return합니다. 입출력 예 #2 32는 3의 배수가 아니므로 0을 return합니다. school.programmers.co

JavaScript_코딩 기초 트레이닝_공배수_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_공배수_school_programmers 풀이 function solution(number, n, m) { // number를 n, m으로 나눴을 때 둘다 나머지가 0일 경우 1, 아니면 0을 반환한다. return number % n == 0 && number % m == 0 ? 1 : 0; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181936 코딩테스트 연습 - 공배수 정수 number 와 n , m 이 주어집니다. number 가 n 의 배수이면서 m 의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요. 제한사항 10 ≤ number ≤ 100 2 ≤ n , m < 10 입출력 예 number n m result 60 2 3 1 55 10 5 0 입출력 예 설명 입출력 예 #1 60은 2의 배수이면서 3의 배수이기 때문에 1을 re

JavaScript_코딩 기초 트레이닝_홀짝에 따라 다른 값 반환하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_홀짝에 따라 다른 값 반환하기_school_programmers 풀이 function solution(n) { // Array로 특정 숫자 길이만큼 배열을 만든 다음, fill()을 이용하여 값을 리셋한다. // map(value, index)을 이용하여 인덱스 +1의 값을 을 이용한 특정 숫자까지의 배열을 만듦 // 만약, 양의 정수가 짝수이면 짝수 제곱 값을 더하여 반환 // 만약, 양의 정수가 홀수이면 홀수 값을 더하여 반환 var res = 0; Array(n).fill().map((v,i)=>i+1).filter(v => {res += (n % 2 == 1 && v % 2 == 1) ? v : (n % 2 == 0 && v % 2 == 0) ? v * v : 0}); return res; } * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181935 코딩테스트 연습 -

JavaScript_코딩 기초 트레이딩_a와 b 출력하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이딩_a와 b 출력하기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = line.split(' '); }).on('close', function () { // console.log()에서 문자열 그대로 출력하는 문제 console.log("a = " + Number(input[0]) + "\nb = " + Number(input[1])); }); * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181951 코딩테스트 연습 - a와 b 출력하기 문제 설명 정수 a 와 b 가 주어

JavaScript_코딩 기초 트레이닝_문자열 반복해서 출력하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 반복해서 출력하기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = line.split(' '); }).on('close', function () { str = input[0]; n = Number(input[1]); // 값.repeat(반복 횟수)를 통해 특정수(n) 만큼 반복한다. console.log(str.repeat(n)); }); * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181950 코딩테스트 연습 - 문자열 반복해서 출력하기 문제 설명 문자열 s

JavaScript_코딩 기초 트레이닝_대소문자 바꿔서 출력하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_대소문자 바꿔서 출력하기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = [line]; }).on('close',function(){ str = input[0]; // 변환할 값을 저장할 배열 준비 let arr = []; // 입력된 문자열을 배열로 만든 뒤, 해당 문자가 대문자면 소문자, 아니라면 대문자로 변경 str.split('').forEach((k) => {arr.push(k == k.toUpperCase() ? k.toLowerCase() : k.toUpperCase()); }); // 이후 문자배열 합치기 console.

JavaScript_코딩 기초 트레이닝_특수문자 출력하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_특수문자 출력하기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on('close', function () { // `을 이용하여 문자열로 인식하도록 설정 // \는 문자열로 쓰려면 앞에 \ 더 붙여주면 된다. console.log(`!@#$%^&*(\\'"<>?:;`); }); * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181948 코딩테스트 연습 - 특수문자 출력하기 solution.c 실행 결과 실행 결과가 여기에 표시됩니다. school.programmers.co.kr

JavaScript_코딩 기초 트레이닝_덧셈식 출력하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_덧셈식 출력하기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = line.split(' '); }).on('close', function () { // 그대로 합치면 문자열(45)으로 합쳐지므로, 한번 묶어준다. console.log(Number(input[0]) + " + " + Number(input[1]) + " = " + (Number(input[0]) + Number(input[1])) ); }); * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181947 코딩

JavaScript_코딩 기초 트레이닝_문자열 붙여서 출력하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 붙여서 출력하기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = line.split(' '); }).on('close', function () { str1 = input[0]; str2 = input[1]; // 공백제거 -> trim() 사용 console.log((str1+str2).trim()); }); * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181946 코딩테스트 연습 - 문자열 붙여서 출력하기 문제 설명 두 개의 문자열 str1 , str2 가 공

JavaScript_코딩 기초 트레이닝_문자열 돌리기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 돌리기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = [line]; }).on('close',function(){ str = input[0]; // 문자열을 배열로 만든뒤, 배열 값을 console.log로 찍음 [...str].forEach(function(x){console.log(x)}); }); * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181945 코딩테스트 연습 - 문자열 돌리기 문제 설명 문자열 str 이 주어집니다. 문자열을 시계방향으로 90도

JavaScript_코딩 기초 트레이닝_홀짝 구분하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_홀짝 구분하기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = line.split(' '); }).on('close', function () { n = Number(input[0]); // 삼항연산자를 이용, 2로 나눈 나머지가 0일경우 even, 1일경우 odd를 출력 console.log(n + " is " + (n % 2 == 0 ? "even" : "odd")); }); * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181944 코딩테스트 연습 - 홀짝 구분하기

JAVA_Delete Columns to Make Sorted_LeetCode 944 [내부링크]

JAVA_Delete Columns to Make Sorted_LeetCode 944 풀이 class Solution { public int minDeletionSize(String[] strs) { int len = strs[0].length(), res = 0; for(int i = 0; i < len; i++){ char ch1 = 'a'; for(String str : strs){ char ch2 = str.charAt(i); if(ch2 < ch1){ res++; break; } ch1 = ch2; } } return res; } } * 출처 https://leetcode.com/problems/delete-columns-to-make-sorted/ Delete Columns to Make Sorted - LeetCode Can you solve this real interview question? Delete Columns to Make Sorted - You are gi

JAVA_Verifying an Alien Dictionary_LeetCode 953 [내부링크]

JAVA_Verifying an Alien Dictionary_LeetCode 953 풀이 class Solution { public boolean isAlienSorted(String[] words, String order) { for (int i = 0; i < words.length - 1; ++i) { // 비교값 세팅 String word1 = words[i], word2 = words[i+1]; // 비교값중 가장 높은 문자 기준 검색 for (int j = 0; j < Math.max(word1.length(), word2.length()); ++j) { // order에서 문자 찾아서 값 세팅 int order1 = j < word1.length() ? order.indexOf(word1.charAt(j)) : -1; int order2 = j < word2.length() ? order.indexOf(word2.charAt(j)) : -1; if(order1 > or

JAVA_N-Repeated Element in Size 2N Array_LeetCode 961 [내부링크]

JAVA_N-Repeated Element in Size 2N Array_LeetCode 961 풀이 class Solution { public int repeatedNTimes(int[] nums) { // 문제 내용 : 특정 값은 반복해서 나오지만, 나머지 값은 한번씩 나옴 Set<Integer> set = new HashSet<>(); // hashset의 contains를 이용해서 값 체크 // 만약 반복된 수가 있을 경우 그 값을 반환 for(int num : nums) if(set.contains(num)){ return num; } else{ set.add(num); } return -1; } } * 출처 https://leetcode.com/problems/n-repeated-element-in-size-2n-array/ N-Repeated Element in Size 2N Array - LeetCode Can you solve this real interview qu

JAVA_Univalued Binary Tree_LeetCode 965 [내부링크]

JAVA_Univalued Binary Tree_LeetCode 965 풀이 class Solution { // 비교 set Set<Integer> set = new HashSet<>(); public boolean isUnivalTree(TreeNode root) { if (root == null) return set.size() == 1; // 재귀시 값 설정 set.add(root.val); return isUnivalTree(root.left) && isUnivalTree(root.right); } } * 출처 https://leetcode.com/problems/univalued-binary-tree/ Univalued Binary Tree - LeetCode Can you solve this real interview question? Univalued Binary Tree - A binary tree is uni-valued if every node in the tree

JAVA_Largest Perimeter Triangle_LeetCode 976 [내부링크]

JAVA_Largest Perimeter Triangle_LeetCode 976 풀이 class Solution { public int largestPerimeter(int[] nums) { // 삼각형 변을 순서대로 정렬 Arrays.sort(nums); // for문으로 삼각형 변 배열에서 가장 긴 변이 다른 2변의 합보다 작아야 함 for (int i = nums.length - 1; i > 1; --i) if (nums[i] < nums[i - 1] + nums[i - 2]) return nums[i] + nums[i - 1] + nums[i - 2]; return 0; } } * 출처 https://leetcode.com/problems/largest-perimeter-triangle/ Largest Perimeter Triangle - LeetCode Can you solve this real interview question? Largest Perimeter Triang

JAVA_Squares of a Sorted Array_LeetCode 977 [내부링크]

JAVA_Squares of a Sorted Array_LeetCode 977 풀이 class Solution { public int[] sortedSquares(int[] nums) { return Arrays.stream(nums).map(i -> i * i).sorted().toArray(); } } * 출처 https://leetcode.com/problems/squares-of-a-sorted-array/ Squares of a Sorted Array - LeetCode Can you solve this real interview question? Squares of a Sorted Array - Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order. Example 1: Input: n

JAVA_Add to Array-Form of Integer_LeetCode 989 [내부링크]

JAVA_Add to Array-Form of Integer_LeetCode 989 풀이 class Solution { public List<Integer> addToArrayForm(int[] num, int k) { LinkedList<Integer> res = new LinkedList<>(); int n = num.length - 1; // LinkedList의 addFirst를 이용하여 계산한 값을 앞에 추가(추가할때마다 밀려남) while(n >= 0 || k != 0){ if(n >= 0) k += num[n--]; res.addFirst(k % 10); k /= 10; } return res; } } * 출처 https://leetcode.com/problems/add-to-array-form-of-integer/ Add to Array-Form of Integer - LeetCode Can you solve this real interview question? Add

JavaScript_코딩 기초 트레이닝_문자열 출력하기_school_programmers [내부링크]

JavaScript_코딩 기초 트레이닝_문자열 출력하기_school_programmers 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = [line]; }).on('close',function(){ str = input[0]; console.log(str); }); 문제유형이 js라서 혹시 했는데 그냥 console.log()에 값을 넣으면 끝나는 문제였다. * 출처 https://school.programmers.co.kr/learn/courses/30/lessons/181952 코딩테스트 연습 - 문자열 출력하기 문제 설명 문자열 str 이 주어질 때, str 을 출력하는 코드를 작성해 보세요. 제한사항

JAVA_Sort Array By Parity II_LeetCode 922 [내부링크]

JAVA_Sort Array By Parity II_LeetCode 922 풀이 class Solution { public int[] sortArrayByParityII(int[] nums) { int odd = 1, even = 0; int[] arr = new int[nums.length]; for(int a: nums){ if(a % 2 == 0){ arr[even] = a; even += 2; }else{ arr[odd] = a; odd+=2; } } return arr; } } * 출처 https://leetcode.com/problems/sort-array-by-parity-ii/ Sort Array By Parity II - LeetCode Can you solve this real interview question? Sort Array By Parity II - Given an array of integers nums, half of the integers in num

JAVA_Long Pressed Name_LeetCode 925 [내부링크]

JAVA_Long Pressed Name_LeetCode 925 풀이 class Solution { public boolean isLongPressedName(String name, String typed) { int num = 0; for(int i = 0; i < typed.length(); i++){ if(num < name.length() && name.charAt(num) == typed.charAt(i)) num++; else if(i == 0 || typed.charAt(i) != typed.charAt(i-1)) return false; } return num == name.length(); } } * 출처 https://leetcode.com/problems/long-pressed-name/ Long Pressed Name - LeetCode Can you solve this real interview question? Long Pressed Name - Your f

JAVA_Unique Email Addresses_LeetCode 929 [내부링크]

JAVA_Unique Email Addresses_LeetCode 929 풀이 class Solution { public int numUniqueEmails(String[] emails) { Set<String> res = new HashSet<>(); for(String str : emails){ String[] str2 = str.split("@"); str2[0] = str2[0].replaceAll("\\.",""); res.add(str2[0].split("\\+")[0] + "@" + str2[1]); } return res.size(); } } * 출처 https://leetcode.com/problems/unique-email-addresses/ Unique Email Addresses - LeetCode Can you solve this real interview question? Unique Email Addresses - Every valid email consi

JAVA_Number of Recent Calls_LeetCode 933 [내부링크]

JAVA_Number of Recent Calls_LeetCode 933 풀이 class RecentCounter { Queue<Integer> queue; public RecentCounter() { queue = new LinkedList(); } public int ping(int t) { queue.add(t); while (queue.peek() < t - 3000) queue.poll(); return queue.size(); } } /** * Your RecentCounter object will be instantiated and called as such: * RecentCounter obj = new RecentCounter(); * int param_1 = obj.ping(t); */ 새 요청값을 받았을 때 지금까지 받은 요청값을 리스트(지난 요청값들 포함)로 만든 다음, 3000의 차이가 나는지 확인하는 문제 * 출처 https://leetcode.com/pro

JAVA_Range Sum of BST_LeetCode 938 [내부링크]

JAVA_Range Sum of BST_LeetCode 938 풀이 class Solution { int sum = 0; public int rangeSumBST(TreeNode root, int low, int high) { if(root == null ) return 0; if(root.val >= low && root.val <= high) this.sum += root.val; if(root.val > low) rangeSumBST(root.left,low,high); if(root.val < high) rangeSumBST(root.right,low,high); return sum; } } * 출처 https://leetcode.com/problems/range-sum-of-bst/ Range Sum of BST - LeetCode Can you solve this real interview question? Range Sum of BST - Given the root no

JAVA_Valid Mountain Array_LeetCode 941 [내부링크]

JAVA_Valid Mountain Array_LeetCode 941 풀이 class Solution { public boolean validMountainArray(int[] arr) { if(arr.length < 3) return false; int i = 0, j = arr.length - 1; while(i + 1 < arr.length - 1 && arr[i] < arr[i + 1]) i++; while(j - 1 > 0 && arr[j] < arr[j - 1]) j--; return i == j; } } * 출처 https://leetcode.com/problems/valid-mountain-array/ Valid Mountain Array - LeetCode Can you solve this real interview question? Valid Mountain Array - Given an array of integers arr, return true if and o

JAVA_DI String Match_LeetCode 942 [내부링크]

JAVA_DI String Match_LeetCode 942 풀이 class Solution { public int[] diStringMatch(String s) { int n = s.length(), leftVal = 0, rightVal = n; int[] res = new int[n+1]; for (int i = 0; i < n; i++) res[i] = s.charAt(i) == 'I' ? leftVal++ : rightVal--; res[n] = leftVal; return res; } } * 출처 https://leetcode.com/problems/di-string-match/ DI String Match - LeetCode Can you solve this real interview question? DI String Match - A permutation perm of n + 1 integers of all the integers in the range [0, n]

JAVA_Sort Array By Parity_LeetCode 905 [내부링크]

JAVA_Sort Array By Parity_LeetCode 905 풀이 class Solution { public int[] sortArrayByParity(int[] nums) { int i = 0; for (int j = 0; j < nums.length; j++){ if (nums[j] % 2 == 0) { int temp = nums[i]; nums[i++] = nums[j]; nums[j] = temp;; } } return nums; } } * 출처 Sort Array By Parity - LeetCode Can you solve this real interview question? Sort Array By Parity - Given an integer array nums, move all the even integers at the beginning of the array followed by all the odd integers. Return any array th

JAVA_Smallest Range I_LeetCode 908 [내부링크]

JAVA_Smallest Range I_LeetCode 908 풀이 class Solution { public int smallestRangeI(int[] nums, int k) { int max=nums[0], min=nums[0]; for(int num :nums){ max = Math.max(max,num); min = Math.min(min,num); } min = (max - k) - (min + k); return min < 0 ? 0 : min; } } * 출처 https://leetcode.com/problems/smallest-range-i/ Smallest Range I - LeetCode Can you solve this real interview question? Smallest Range I - You are given an integer array nums and an integer k. In one operation, you can choose any in

JAVA_X of a Kind in a Deck of Cards_LeetCode 914 [내부링크]

JAVA_X of a Kind in a Deck of Cards_LeetCode 914 풀이 class Solution { public boolean hasGroupsSizeX(int[] deck) { Map<Integer, Integer> map = new HashMap<>(); int gcd = 0; for (int i : deck){ map.put(i, map.getOrDefault(i, 0) + 1); // System.out.println(map.get(i)); } for (int val : map.values()) gcd = gcd(gcd, val); return gcd > 1; } public int gcd(int a, int b) { return (b == 0) ? a : gcd(b, a % b); } } * 출처 https://leetcode.com/problems/valid-phone-numbers/ Valid Phone Numbers - LeetCode Can y

JAVA_Reverse Only Letters_LeetCode 917 [내부링크]

JAVA_Reverse Only Letters_LeetCode 917 풀이 class Solution { public String reverseOnlyLetters(String s) { StringBuilder sb = new StringBuilder(s.replaceAll("[^a-zA-Z]","")).reverse(); for(int i = 0;i <= s.length()-1; i++){ if(!Character.isLetter(s.charAt(i))) sb.insert(i,s.charAt(i)); } return String.valueOf(sb); } } * 출처 https://leetcode.com/problems/reverse-only-letters/ Reverse Only Letters - LeetCode Can you solve this real interview question? Reverse Only Letters - Given a string s, reverse t

JAVA_Monotonic Array_LeetCode 896 [내부링크]

JAVA_Monotonic Array_LeetCode 896 풀이 class Solution { public boolean isMonotonic(int[] nums) { boolean asc = false, desc = false; for(int i = 1; i < nums.length; i++){ if(nums[i] < nums[i-1]) desc = true; if(nums[i] > nums[i-1]) asc = true; } return asc && desc ? false: true; } } * 출처 Monotonic Array - LeetCode Can you solve this real interview question? Monotonic Array - An array is monotonic if it is either monotone increasing or monotone decreasing. An array nums is monotone increasing if for

JAVA_Increasing Order Search Tree_LeetCode 897 [내부링크]

JAVA_Increasing Order Search Tree_LeetCode 897 풀이 class Solution { TreeNode top; public TreeNode increasingBST(TreeNode root) { TreeNode res = new TreeNode(); top = res; inOrder(root); return res.right; } private void inOrder(TreeNode root){ if(root == null) return; inOrder(root.left); top.right = new TreeNode(root.val); top = top.right; inOrder(root.right); } } * 출처 Increasing Order Search Tree - LeetCode Can you solve this real interview question? Increasing Order Search Tree - Given the root

JavaScript_유한소수 판별하기_school_programmers [내부링크]

JavaScript_유한소수 판별하기_school_programmers 풀이 function solution(numlist, n) { return numlist.sort((a,b) => (Math.abs(a - n) - Math.abs(b - n) || b - a)); } * 출처 코딩테스트 연습 - 유한소수 판별하기 소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 유한소수가 되기 위한 분수의 조건은 다음과 같습니다. 기약분수로 나타내었을 때, 분모의 소인수가 2와 5만 존재해야 합니다. 두 정수 a 와 b 가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요. 제한사항 a , b 는 정수 0 < a ≤ 1,000 0 < b ≤ 1,000 입출력 예 a b result ... school.programmers.

JAVA_Find the Index of the First Occurrence in a String_LeetCode 28 [내부링크]

JAVA_Find the Index of the First Occurrence in a String_LeetCode 28 풀이 class Solution { public int strStr(String haystack, String needle) { return haystack.contains(needle) ? haystack.indexOf(needle) : -1; } } * 출처 Find the Index of the First Occurrence in a String - LeetCode Can you solve this real interview question? Find the Index of the First Occurrence in a String - Given two strings needle and haystack, return the index of the first occurrence of needle in haystack, or -1 if needle is not

JavaScript_등수 매기기_school_programmers [내부링크]

JavaScript_등수 매기기_school_programmers 풀이 function solution(score) { let sorted = score.map(v => (v[0] + v[1]) / 2).sort((a,b) => b - a); return score.map(v => (v[0] + v[1])/2).map(v => sorted.indexOf(v) + 1); } * 출처 코딩테스트 연습 - 등수 매기기 영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열 score 가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ score [0], score [1] ≤ 100 1 ≤ score 의 길이 ≤ 10 score 의 원소 길이는 2입니다. score 는 중복된 원소를 갖지 않습니다. 입출력 예 scor

JavaScript_특이한 정렬_school_programmers [내부링크]

JavaScript_특이한 정렬_school_programmers 풀이 function solution(numlist, n) { return numlist.sort((a,b) => (Math.abs(a - n) - Math.abs(b - n) || b - a)); } 포인트는 기준수로부터 차이값이 같을 경우 더 높은 수를 구해야하는 점(절대값 비교 후 실제값 비교 필요) * 출처 코딩테스트 연습 - 특이한 정렬 정수 n 을 기준으로 n 과 가까운 수부터 정렬하려고 합니다. 이때 n 으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist 와 정수 n 이 주어질 때 numlist 의 원소를 n 으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 10,000 1 ≤ numlist 의 원소 ≤ 10,000 1 ≤ numlist 의 길이 ≤ 100 numlist 는 중복된 원소를 갖지 않

JavaScript_k의 개수_school_programmers [내부링크]

JavaScript_k의 개수_school_programmers 풀이 function solution(i, j, k) { let s = ""; for(let val = i; val <=j; val++){ s += val.toString(); } return s.split('').filter(val => Number(val) == k).length; } * 출처 코딩테스트 연습 - k의 개수 1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i , j , k 가 매개변수로 주어질 때, i 부터 j 까지 k 가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ i < j ≤ 100,000 0 ≤ k ≤ 9 입출력 예 i j k result 1 13 1 6 10 50 5 5 3 10 2 0 입출력 예 설명 입출력 예 #1 본문과 동일합니다. 입출력 예 #2 10부터 50까지 5는 15, 25, 35,

JavaScript_이진수 더하기_school_programmers [내부링크]

JavaScript_이진수 더하기_school_programmers 풀이 function solution(bin1, bin2) { return (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2); } parseInt의 2진수 / toString()의 2진수 출력을 이용하여 푼 문제 * 출처 코딩테스트 연습 - 이진수 더하기 이진수를 의미하는 두 개의 문자열 bin1 과 bin2 가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요. 제한사항 return 값은 이진수를 의미하는 문자열입니다. 1 ≤ bin1 , bin2 의 길이 ≤ 10 bin1 과 bin2 는 0과 1로만 이루어져 있습니다. bin1 과 bin2 는 "0"을 제외하고 0으로 시작하지 않습니다. 입출력 예 bin1 bin2 result "10" "11" "101" "1001" "1111" "11000" 입출력 예 설명 입출력 예 #1

JavaScript_치킨 쿠폰_school_programmers [내부링크]

JavaScript_치킨 쿠폰_school_programmers 풀이 function solution(chicken) { let val = 0; while(chicken >= 10){ val += Math.floor(chicken / 10); chicken = chicken % 10 + Math.floor(chicken / 10); } return val; } * 출처 코딩테스트 연습 - 치킨 쿠폰 프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken 이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요. 제한사항 chicken 은 정수입니다. 0 ≤ chicken ≤ 1,000,000 입출력 예 chicken result 100 11 1,081 120 입출력 예 설명

JavaScript_로그인 성공?_school_programmers [내부링크]

JavaScript_로그인 성공?_school_programmers 풀이 function solution(id_pw, db) { const arr = db.filter((val) => val[0] === id_pw[0]); return arr.length <= 0 ? "fail" : arr[0][1] === id_pw[1] ? "login" : "wrong pw"; } * 출처 코딩테스트 연습 - 로그인 성공? 아이디와 비밀번호가 모두 일치하는 회원정보가 있으면 "login"을 return합니다. 로그인이 실패했을 때 아이디가 일치하는 회원이 없다면 “fail”를, 아이디는 일치하지만 비밀번호가 일치하는 회원이 없다면 “wrong pw”를 return 합니다. 제한사항 회원들의 아이디는 문자열입니다. 회원들의 아이디는 알파벳 소문자와 숫자로만 이루어져 있습니다. 회원들의 패스워드는 숫자로 구성된 문자열입니다. 회원들의 비밀번호는 같을 수 있지만 아이디는 같을 수 없습니다. id_pw

JavaScript_영어가 싫어요_school_programmers [내부링크]

JavaScript_영어가 싫어요_school_programmers 풀이 function solution(numbers) { let numArr = ["zero","one","two","three","four","five","six","seven","eight","nine"]; numArr.forEach((str, idx) => { numbers = numbers.replaceAll(str, idx); }); return Number(numbers); } * 출처 코딩테스트 연습 - 영어가 싫어요 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers 가 매개변수로 주어질 때, numbers 를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요. 제한사항 numbers 는 소문자로만 구성되어 있습니다. numbers 는 "zero", "one", "two", "three", "four", "five", "six", "seven

JavaScript_대문자와 소문자_school_programmers [내부링크]

JavaScript_대문자와 소문자_school_programmers 풀이 function solution(my_string) { return my_string.split("").map(v => (v === v.toUpperCase() ? v.toLowerCase() : v.toUpperCase())).join(''); } * 출처 코딩테스트 연습 - 대문자와 소문자 문자열 my_string 이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_string 의 길이 ≤ 1,000 my_string 은 영어 대문자와 소문자로만 구성되어 있습니다. 입출력 예 my_string result "cccCCC" "CCCccc" "abCdEfghIJ" "ABcDeFGHij" 입출력 예 설명 입출력 예 #1 소문자는 대문자로 대문자는 소문자로 바꾼 "CCCccc"를 return합니다. 입출력 예

JavaScript_암호 해독_school_programmers [내부링크]

JavaScript_암호 해독_school_programmers 풀이 function solution(cipher, code) { return cipher.split("").filter((idx,val) => (val + 1) % code === 0).join(''); } * 출처 코딩테스트 연습 - 암호 해독 군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다. 암호화된 문자열 cipher 를 주고받습니다. 그 문자열에서 code 의 배수 번째 글자만 진짜 암호입니다. 문자열 cipher 와 정수 code 가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ cipher 의 길이 ≤ 1,000 1 ≤ code ≤ cipher 의 길이 cipher 는 소문자와 공백으로만 구성되어 있습니다. 공백도 하나의 문자로 취급합니다. 입출력 예 ci... school.programmers.co

JavaScript_369게임_school_programmers [내부링크]

JavaScript_369게임_school_programmers 풀이 function solution(order) { return [...order.toString().matchAll(/[3|6|9]/g)].length; } * 출처 코딩테스트 연습 - 369게임 머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order 가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요. 제한사항 1 ≤ order ≤ 1,000,000 입출력 예 order result 3 1 29423 2 입출력 예 설명 입출력 예 #1 3은 3이 1개 있으므로 1을 출력합니다. 입출력 예 #2 29423은 3... school.programmers.co.kr

JavaScript_가까운 수_school_programmers [내부링크]

JavaScript_가까운 수_school_programmers 풀이 function solution(array, n) { return array.sort((a,b) => Math.abs(n - a) - Math.abs(n - b) || a - b)[0]; } * 출처 코딩테스트 연습 - 가까운 수 정수 배열 array 와 정수 n 이 매개변수로 주어질 때, array 에 들어있는 정수 중 n 과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ array 의 길이 ≤ 100 1 ≤ array 의 원소 ≤ 100 1 ≤ n ≤ 100 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다. 입출력 예 array n result [3, 10, 28] 20 28 [10, 11, 12] 13 12 입출력 예 설명 입출력 예 #1 3, 10, 28 중 20과 가장 가까운 수는 28... school.programmers.co.kr

JavaScript_삼각형의 완성조건 (1)_school_programmers [내부링크]

JavaScript_삼각형의 완성조건 (1)_school_programmers 풀이 function solution(sides) { sides = sides.sort((a,b) => a-b); return sides[2] < sides[0] + sides[1] ? 1 : 2 ; } * 출처 코딩테스트 연습 - 삼각형의 완성조건 (1) 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 세 변의 길이가 담긴 배열 sides 이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요. 제한사항 sides 의 원소는 자연수입니다. sides 의 길이는 3입니다. 1 ≤ sides 의 원소 ≤ 1,000 입출력 예 sides result [1, 2, 3] 2 [3, 6, 2] 2 [199... school.p

JavaScript_중복된 문자 제거_school_programmers [내부링크]

JavaScript_중복된 문자 제거_school_programmers 풀이 function solution(my_string) { return my_string.split('').filter((v, i) => my_string.split('').indexOf(v) === i).join('') ; } * 출처 코딩테스트 연습 - 중복된 문자 제거 문자열 my_string 이 매개변수로 주어집니다. my_string 에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ my_string ≤ 110 my_string 은 대문자, 소문자, 공백으로 구성되어 있습니다. 대문자와 소문자를 구분합니다. 공백(" ")도 하나의 문자로 구분합니다. 중복된 문자 중 가장 앞에 있는 문자를 남깁니다. 입출력 예 my_string result "people" "peol" "We are the world" "We arth... s

JavaScript_가장 큰 수 찾기_school_programmers [내부링크]

JavaScript_가장 큰 수 찾기_school_programmers 풀이 function solution(array) { var arr = new Array(); array.forEach((value,idx) => { if(Math.max.apply(null,array) === value){ arr.push(value); arr.push(idx); return arr; } }); return arr; } * 출처 코딩테스트 연습 - 가장 큰 수 찾기 정수 배열 array 가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요. 제한사항 1 ≤ array의 길이 ≤ 100 0 ≤ array 원소 ≤ 1,000 array 에 중복된 숫자는 없습니다. 입출력 예 array result [1, 8, 3] [8, 1] [9, 10, 11, 8] [11, 2] 입출력 예 설명 입출력 예 #1 1, 8, 3 중 가장 큰

JavaScript_편지_school_programmers [내부링크]

JavaScript_편지_school_programmers 풀이 function solution(message) { return message.length * 2; } * 출처 코딩테스트 연습 - 편지 머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message 를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요. 제한사항 공백도 하나의 문자로 취급합니다. 1 ≤ message의 길이 ≤ 50 편지지의 여백은 생각하지 않습니다. message 는 영문 알파벳 대소문자, ‘!’, ‘~’ 또는 공백으로만 이루어져 있습니다. 입출력 예 message result ... school.programmers.co.kr

JavaScript_약수 구하기_school_programmers [내부링크]

JavaScript_약수 구하기_school_programmers 풀이 function solution(n) { let answer = []; for (let i = 1; i <= n; i++) { if(n % i === 0) answer.push(i); } return answer; } * 출처 코딩테스트 연습 - 약수 구하기 문제 설명 정수 n 이 매개변수로 주어질 때, n 의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ n ≤ 10,000 입출력 예 n result 24 [1, 2, 3, 4, 6, 8, 12, 24] 29 [1, 29] 입출력 예 설명 입출력 예 #1 24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다. 입출력 예 #2 29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다. school.programmers.co.kr

JavaScript_한 번만 등장한 문자_school_programmers [내부링크]

JavaScript_한 번만 등장한 문자_school_programmers 풀이 function solution(s) { let arr = []; s.split("").forEach(str => {if(s.indexOf(str) === s.lastIndexOf(str)) arr.push(str)}); return arr.sort().join(''); } * 출처 코딩테스트 연습 - 한 번만 등장한 문자 문자열 s 가 매개변수로 주어집니다. s 에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다. 제한사항 0 < s 의 길이 < 1,000 s 는 소문자로만 이루어져 있습니다. 입출력 예 s result "abcabcadc" "d" "abdc" "abcd" "hello" "eho" 입출력 예 설명 입출력 예 #1 "abcabcadc"에서 하나만 등장하는 문

JavaScript_인덱스 바꾸기_school_programmers [내부링크]

JavaScript_인덱스 바꾸기_school_programmers 풀이 function solution(my_string, num1, num2) { let str = my_string.split("") my_string.split("").filter((char,idx) => { if(idx == num1) str.splice(num2,1,char); else if(idx == num2) str.splice(num1,1,char); }); return str.join(''); } * 출처 코딩테스트 연습 - 인덱스 바꾸기 문자열 my_string 과 정수 num1 , num2 가 매개변수로 주어질 때, my_string 에서 인덱스 num1 과 인덱스 num2 에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요. 제한사항 1 < my_string 의 길이 < 100 0 ≤ num1 , num2 < my_string 의 길이 my_string 은

JavaScript_A로 B 만들기_school_programmers [내부링크]

JavaScript_A로 B 만들기_school_programmers 풀이 function solution(before, after) { return [...before].reverse().sort().join('') === [...after].sort().join('') ? 1 : 0; } * 출처 코딩테스트 연습 - A로 B 만들기 문자열 before 와 after 가 매개변수로 주어질 때, before 의 순서를 바꾸어 after 를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요. 제한사항 0 < before 의 길이 == after 의 길이 < 1,000 before 와 after 는 모두 소문자로 이루어져 있습니다. 입출력 예 before after result "olleh" "hello" 1 "allpe" "apple" 0 입출력 예 설명 입출력 예 #1 "olleh"의 순서를 바꾸면 "hello"를... school.

JavaScript_문자열 계산하기_school_programmers [내부링크]

JavaScript_문자열 계산하기_school_programmers 풀이 function solution(my_string) { return eval(my_string); } eval함수를 사용하여 푼문제 사실 eval은 사용방법으로 추천하지 않는다. 보안상 문제가 될 수 있기 때문에 추천하고 싶지 않음 * 출처 코딩테스트 연습 - 문자열 계산하기 제한사항 연산자는 +, -만 존재합니다. 문자열의 시작과 끝에는 공백이 없습니다. 0으로 시작하는 숫자는 주어지지 않습니다. 잘못된 수식은 주어지지 않습니다. 5 ≤ my_string 의 길이 ≤ 100 my_string 을 계산한 결과값은 1 이상 100,000 이하입니다. my_string 의 중간 계산 값은 -100,000 이상 100,000 이하입니다. 계산에 사용하는 숫자는 1 이상 20,000 이하인 자연수입니다. my_string 에는 연산자가 적어도 하나 포함되어 있습니다. return type 은 정수형입니다. my...

JavaScript_숫자 찾기_school_programmers [내부링크]

JavaScript_숫자 찾기_school_programmers 풀이 function solution(num, k) { return String(num).split('').indexOf(String(k)) != -1 ? String(num).split('').indexOf(String(k)) + 1 : -1 } * 출처 코딩테스트 연습 - 숫자 찾기 정수 num 과 k 가 매개변수로 주어질 때, num 을 이루는 숫자 중에 k 가 있으면 num 의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요. 제한사항 0 < num < 1,000,000 0 ≤ k < 10 num 에 k 가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다. 입출력 예 num k result 29183 1 3 232443 4 4 123456 7 -1 입출력 예 설명 입출력 예 #1 29183에서 1은 3번째에 있습니다. 입출력 예...

JavaScript_배열의 유사도_school_programmers [내부링크]

JavaScript_배열의 유사도_school_programmers 풀이 function solution(s1, s2) { return s1.filter(x => s2.includes(x)).length; } * 출처 코딩테스트 연습 - 배열의 유사도 두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1 과 s2 가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ s1 , s2 의 길이 ≤ 100 1 ≤ s1 , s2 의 원소의 길이 ≤ 10 s1 과 s2 의 원소는 알파벳 소문자로만 이루어져 있습니다 s1 과 s2 는 각각 중복된 원소를 갖지 않습니다. 입출력 예 s1 s2 result ["a", "b", "c"] ["com", "b", "d", "p", "c"] 2 ["n", "omg"] ["m", "dot"]... school.programmers.co.kr

JAVA_Rectangle Overlap_LeetCode 836 [내부링크]

JAVA_Rectangle Overlap_LeetCode 836 풀이 class Solution { public boolean isRectangleOverlap(int[] rec1, int[] rec2) { return (rec1[0] < rec2[2] && rec1[1] < rec2[3] && rec1[2] > rec2[0] && rec1[3] > rec2[1]); } } 사각형 겹침 조건 rec1(x2, y2) > rec2(x1, y1) rec1(x1, y1) < rec2(x2, y2) * 출처 Rectangle Overlap - LeetCode Can you solve this real interview question? Rectangle Overlap - An axis-aligned rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) is the coordinate of its bottom-left corn

JAVA_Backspace String Compare_LeetCode 844 [내부링크]

JAVA_Backspace String Compare_LeetCode 844 풀이 class Solution { public boolean backspaceCompare(String S, String T) { return stackSolution(S).equals(stackSolution(T)); } private String stackSolution(String str) { Stack<Character> stack = new Stack<Character>(); for (char c : str.toCharArray()) { if (c != '#') stack.push(c); else if (!stack.isEmpty()) stack.pop(); } return stack.toString(); } } * 출처 Backspace String Compare - LeetCode Can you solve this real interview question? Backspace String Co

JAVA_Buddy Strings_LeetCode 859 [내부링크]

JAVA_Buddy Strings_LeetCode 859 풀이 class Solution { public boolean buddyStrings(String s, String goal) { if (s.length() != goal.length()) return false; if (s.equals(goal)) { Set<Character> set = new HashSet<Character>(); for (char c : s.toCharArray()) set.add(c); return set.size() < s.length(); } List<Integer> list = new ArrayList<>(); for (int i = 0; i < s.length(); ++i) { if (s.charAt(i) != goal.charAt(i)) list.add(i); } return list.size() == 2 && s.charAt(list.get(0)) == goal.charAt(list.get(

JAVA_Lemonade Change_LeetCode 860 [내부링크]

JAVA_Lemonade Change_LeetCode 860 풀이 class Solution { public boolean lemonadeChange(int[] bills) { int five = 0, ten = 0; for (int i : bills) { if (i == 5) five++; else if (i == 10) {five--; ten++;} else if (ten > 0) {ten--; five--;} else five -= 3; if (five < 0) return false; } return true; } } * 출처 Lemonade Change - LeetCode Can you solve this real interview question? Lemonade Change - At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you and order one

JAVA_Transpose Matrix_LeetCode 867 [내부링크]

JAVA_Transpose Matrix_LeetCode 867 풀이 class Solution { public int[][] transpose(int[][] matrix) { int[][] res = new int[matrix[0].length][matrix.length]; for (int i = 0; i < matrix[0].length; i++) { for (int j = 0; j < matrix.length; j++) { res[i][j] = matrix[j][i]; } } return res; } } * 출처 Transpose Matrix - LeetCode Can you solve this real interview question? Transpose Matrix - Given a 2D integer array matrix, return the transpose of matrix. The transpose of a matrix is the matrix flipped over

JAVA_Binary Gap_LeetCode 868 [내부링크]

JAVA_Binary Gap_LeetCode 868 풀이 class Solution { public int binaryGap(int n) { int res = 0, cnt = -32; while(n > 0){ if(n % 2 == 1){ res = Math.max(res,cnt); cnt = 0; } cnt++; n = n / 2; } return res; } } * 출처 Binary Gap - LeetCode Can you solve this real interview question? Binary Gap - Given a positive integer n, find and return the longest distance between any two adjacent 1's in the binary representation of n. If there are no two adjacent 1's, return 0. Two 1's are adjacent if there are only

JAVA_Rotate String_LeetCode 796 [내부링크]

JAVA_Rotate String_LeetCode 796 풀이 class Solution { public boolean rotateString(String s, String goal) { return s.length() == goal.length() && (s + s).contains(goal); } } * 출처 Rotate String - LeetCode Can you solve this real interview question? Rotate String - Given two strings s and goal, return true if and only if s can become goal after some number of shifts on s. A shift on s consists of moving the leftmost character of s to the rightmost position. * For example, if s = "abcde", then it will

JAVA_Unique Morse Code Words_LeetCode 804 [내부링크]

JAVA_Unique Morse Code Words_LeetCode 804 풀이 class Solution { public int uniqueMorseRepresentations(String[] words) { String[] str = new String[]{".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}; Set<String> set = new HashSet<>(); for (String word : words) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < word.length();i++) { sb.append(str[word.charAt(i) - 'a']); } set.add(

JAVA_Number of Lines To Write String_LeetCode 806 [내부링크]

JAVA_Number of Lines To Write String_LeetCode 806 풀이 class Solution { public int[] numberOfLines(int[] widths, String s) { int res = 1, pixel = 0; for (char c : s.toCharArray()) { int width = widths[c - 'a']; res = pixel + width > 100 ? res + 1 : res; pixel = pixel + width > 100 ? width : pixel + width; } return new int[] {res, pixel}; } } width의 값들은 각 알파벳의 너비값을 의미, pixel은 최대 100까지 됨 예제2에서 알 수 있듯이 a는 4를 의미하는데, bbbcccddd까지 90pixel, aa 까지 하면 98pixel이므로, 다시 시작하도록 함 * 출처 Number of Lines To Write Str

JAVA_Largest Triangle Area_LeetCode 812 [내부링크]

JAVA_Largest Triangle Area_LeetCode 812 풀이 class Solution { public double largestTriangleArea(int[][] points) { double res = 0; for (int[] i : points){ for (int[] j : points){ for (int[] k : points){ res = Math.max(res, 0.5 * Math.abs(i[0] * j[1] + j[0] * k[1] + k[0] * i[1] - j[0] * i[1] - k[0] * j[1] - i[0] * k[1])); } } } return res; } } 3점 삼각형 넓이 공식을 사용한 문제이다. * 출처 Largest Triangle Area - LeetCode Can you solve this real interview question? Largest Triangle Area - Given an array of points on

JAVA_Most Common Word_LeetCode 819 [내부링크]

JAVA_Most Common Word_LeetCode 819 풀이 class Solution { public String mostCommonWord(String paragraph, String[] banned) { HashMap<String, Integer> wordToCount = new HashMap<String, Integer>(); int max = 0, cnt = 0; String res = ""; HashSet<String> hashSet = new HashSet<String>(); Collections.addAll(hashSet, banned); for (String word : paragraph.toLowerCase().split("[!?;.,' ]")) { if (word.isEmpty() || hashSet.contains(word)) continue; cnt = wordToCount.compute(word, (k, v) -> (v == null) ? 1 : ++

JAVA_Shortest Distance to a Character_LeetCode 821 [내부링크]

JAVA_Shortest Distance to a Character_LeetCode 821 풀이 class Solution { public int[] shortestToChar(String s, char c) { int[] res = new int[s.length()]; for (int i = 0, j = 0; i < res.length; i++) { if (i == 0) j = s.indexOf(c); if (i > j && s.indexOf(c, i) >= 0 && Math.abs(j - i) > Math.abs(s.indexOf(c, i) - i)) { j = s.indexOf(c, i); } res[i] = Math.abs(j - i); } return res; } } * 출처 Shortest Distance to a Character - LeetCode Can you solve this real interview question? Shortest Distance to a C

JAVA_Goat Latin_LeetCode 824 [내부링크]

JAVA_Goat Latin_LeetCode 824 풀이 class Solution { public String toGoatLatin(String sentence) { String[] words = sentence.split("\\s+"); StringBuilder res =new StringBuilder(""); StringBuilder sb = new StringBuilder(""); for(int i = 0;i < words.length;i++){ if(!"aeiouAEIOU".contains(words[i].charAt(0) + "")) res.append(words[i].substring(1)).append(words[i].charAt(0)).append("maa").append(sb+" "); else res.append(words[i]).append("maa").append(sb+" "); sb.append("a"); } return res.toString().trim(

JAVA_Positions of Large Groups_LeetCode 830 [내부링크]

JAVA_Positions of Large Groups_LeetCode 830 풀이 class Solution { public List<List<Integer>> largeGroupPositions(String s) { List<List<Integer>> res = new ArrayList<>(); int start = 0, n = s.length(); for(int i = 1;i <= n;i++){ if((i == n) || !(s.charAt(i) == s.charAt(i-1))){ if((i - start >= 3)) res.add(List.of(start,(i - 1))); start = i; } } return res; } } * 출처 Positions of Large Groups - LeetCode Can you solve this real interview question? Positions of Large Groups - In a string s of lowercase

JAVA_Flipping an Image_LeetCode 832 [내부링크]

JAVA_Flipping an Image_LeetCode 832 풀이 class Solution { public int[][] flipAndInvertImage(int[][] image) { if (image == null || image.length == 0 || image[0].length == 0) return image; for (int[] reverse : image) { int start = 0; int end = reverse.length - 1; while (start <= end) { if (reverse[start] == reverse[end]) { reverse[start] ^= 1; reverse[end] = reverse[start]; } start++; end--; } } return image; } } * 출처 Flipping an Image - LeetCode Can you solve this real interview question? Flipping

JAVA_Self Dividing Numbers_LeetCode 728 [내부링크]

JAVA_Self Dividing Numbers_LeetCode 728 풀이 class Solution { public List<Integer> selfDividingNumbers(int left, int right) { List<Integer>res=new ArrayList(); for(int i=left;i<=right;i++) if(div(i)) res.add(i); return res; } public boolean div(int num){ int n=num; while(n > 0){ int rem = n % 10; if(rem == 0 || (num % rem) != 0) return false; n = n / 10; } return true; } } * 출처 Self Dividing Numbers - LeetCode Self Dividing Numbers - A self-dividing number is a number that is divisible by every di

JAVA_Flood Fill_LeetCode 733 [내부링크]

JAVA_Flood Fill_LeetCode 733 풀이 class Solution { public int[][] floodFill(int[][] image, int sr, int sc, int color) { if (image[sr][sc] != color) dfs(image, sr, sc, image[sr][sc], color); return image; } private void dfs(int[][] image, int i, int j, int color1, int color2) { if (i < 0 || j < 0 || i >= image.length || j >= image[0].length || image[i][j] != color1) return; image[i][j] = color2; dfs(image, i, j - 1, color1, color2); dfs(image, i, j + 1, color1, color2); dfs(image, i - 1, j, color1,

JAVA_Find Smallest Letter Greater Than Target_LeetCode 744 [내부링크]

JAVA_Find Smallest Letter Greater Than Target_LeetCode 744 풀이 class Solution { public char nextGreatestLetter(char[] letters, char target) { for(int i = 0; i < letters.length; i++) if(letters[i] > target) return letters[i]; return letters[0]; } } * 출처 Find Smallest Letter Greater Than Target - LeetCode Find Smallest Letter Greater Than Target - You are given an array of characters letters that is sorted in non-decreasing order, and a character target. There are at least two different characters

JAVA_Min Cost Climbing Stairs_LeetCode 746 [내부링크]

JAVA_Min Cost Climbing Stairs_LeetCode 746 풀이 class Solution { public int minCostClimbingStairs(int[] cost) { for (int i = 2; i < cost.length; i ++) cost[i] += Math.min(cost[i - 1], cost[i - 2]); return Math.min(cost[cost.length - 1], cost[cost.length - 2]); } } * 출처 Min Cost Climbing Stairs - LeetCode Can you solve this real interview question? Min Cost Climbing Stairs - You are given an integer array cost where cost[i] is the cost of ith step on a staircase. Once you pay the cost, you can eith

JAVA_Largest Number At Least Twice of Others_LeetCode 747 [내부링크]

JAVA_Largest Number At Least Twice of Others_LeetCode 747 풀이 class Solution { public int dominantIndex(int[] nums) { if (nums.length == 1) return 0; int max = 0, num = 0, index = 0; for (int i = 0; i < nums.length; i++) { if (max < nums[i]) { num = max; max = nums[i]; index = i; } else if (num < nums[i]) num = nums[i]; } return max >= 2 * num ? index : -1; } } * 출처 Largest Number At Least Twice of Others - LeetCode Largest Number At Least Twice of Others - You are given an integer array nums whe

JAVA_Shortest Completing Word_LeetCode 748 [내부링크]

JAVA_Shortest Completing Word_LeetCode 748 풀이 class Solution { public String shortestCompletingWord(String licensePlate, String[] words) { Map<Character, Integer> map = new HashMap(); String licensePlate2= licensePlate.toLowerCase(); int len = Integer.MAX_VALUE; String str = ""; for(int i=0;i<licensePlate2.length();i++){ char ch = licensePlate2.charAt(i); if(Character.isLetter(ch)) map.put(ch, map.getOrDefault(ch,0) + 1); } for(int i=0;i<words.length;i++){ if(words[i].length() >= len) continue;

JAVA_Prime Number of Set Bits in Binary Representation_LeetCode 762 [내부링크]

JAVA_Prime Number of Set Bits in Binary Representation_LeetCode 762 풀이 class Solution { public int countPrimeSetBits(int left, int right) { int count = 0; for (int i = left; i <= right; i++) if (isPrime(getCnt(i))) count++; return count; } static int getCnt(int n) { int count = 0; while (n > 0) { count++; n -= n & (-n); } return count; } static boolean isPrime(int n) { if (n <= 1) return false; int c = 2; while (c * c <= n) { if (n % c == 0) return false; c++; } return true; } } * 출처 Prime Numbe

JAVA_Toeplitz Matrix_LeetCode 766 [내부링크]

JAVA_Toeplitz Matrix_LeetCode 766 풀이 class Solution { public boolean isToeplitzMatrix(int[][] matrix) { if(matrix.length == 1 && matrix[0].length == 1) return true; for(int i = 1;i < matrix.length;i++) for(int j = 1;j < matrix[i].length;j++) if(matrix[i][j] != matrix[i-1][j-1]) return false; return true; } } * 출처 Toeplitz Matrix - LeetCode Can you solve this real interview question? Toeplitz Matrix - Given an m x n matrix, return true if the matrix is Toeplitz. Otherwise, return false. A matrix

JAVA_Jewels and Stones_LeetCode 771 [내부링크]

JAVA_Jewels and Stones_LeetCode 771 풀이 class Solution { public int numJewelsInStones(String jewels, String stones) { return stones.replaceAll("[^" + jewels + "]", "").length(); } } * 출처 Jewels and Stones - LeetCode Can you solve this real interview question? Jewels and Stones - You're given strings jewels representing the types of stones that are jewels, and stones representing the stones you have. Each character in stones is a type of stone you have. You want to know how many of the stones you

JAVA_Minimum Distance Between BST Nodes_LeetCode 783 [내부링크]

JAVA_Minimum Distance Between BST Nodes_LeetCode 783 풀이 class Solution { int min=Integer.MAX_VALUE; public int minDiffInBST(TreeNode root) { List<Integer> list= new ArrayList<>(); orderTree(root, list); for(int i = 0;i < list.size()-1;i++) min= Math.min(min, list.get(i+1)-list.get(i)); return min; } public void orderTree(TreeNode root, List<Integer> list){ if(root == null) return; orderTree(root.left, list); list.add(root.val); orderTree(root.right, list); } } * 출처 Minimum Distance Between BST N

JAVA_Search in a Binary Search Tree_LeetCode 700 [내부링크]

JAVA_Search in a Binary Search Tree_LeetCode 700 풀이 class Solution { public TreeNode searchBST(TreeNode root, int val) { while(root != null && root.val != val) { root = (val > root.val) ? root.right : root.left; } return root; } } * 출처 Search in a Binary Search Tree - LeetCode Search in a Binary Search Tree - You are given the root of a binary search tree (BST) and an integer val. Find the node in the BST that the node's value equals val and return the subtree rooted with that node. If such a no

JAVA_Binary Search_LeetCode 704 [내부링크]

JAVA_Binary Search_LeetCode 704 풀이 class Solution { public int search(int[] nums, int target) { int num = 0; int end = nums.length-1; while(num <= end){ int mid = num + (end-num) / 2; if(nums[mid]==target){ return mid; }else if(nums[mid] > target){ end = mid - 1; }else{ num = mid + 1; } } return -1; } } * 출처 Binary Search - LeetCode Binary Search - Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exist

JAVA_Kth Largest Element in a Stream_LeetCode 703 [내부링크]

JAVA_Kth Largest Element in a Stream_LeetCode 703 풀이 class KthLargest { PriorityQueue<Integer> pq= new PriorityQueue<>(); int k; public KthLargest(int k, int[] nums) { for( int a: nums){ pq.add(a); } this.k=k; } public int add(int val) { pq.add(val); while(pq.size() > k){ pq.remove(); } return pq.peek(); } } * 출처 Kth Largest Element in a Stream - LeetCode Kth Largest Element in a Stream - Design a class to find the kth largest element in a stream. Note that it is the kth largest element in the s

JAVA_Design HashSet_LeetCode 705 [내부링크]

JAVA_Design HashSet_LeetCode 705 풀이 class MyHashSet { boolean[] setArray; public MyHashSet() { setArray = new boolean[1000000 + 1]; } public void add(int key) { setArray[key] = true; } public void remove(int key) { setArray[key] = false; } public boolean contains(int key) { return setArray[key]; } } - hashset에 맞춰서 데이터를 세팅 할 때 논리 값을 출력 하는 문제 * 출처 Design HashSet - LeetCode Design HashSet - Design a HashSet without using any built-in hash table libraries. Implement MyHashSet class: * void add(key)

JAVA_Design HashMap_LeetCode 706 [내부링크]

JAVA_Design HashMap_LeetCode 706 풀이 class MyHashMap { int[] map = new int[1000001]; public MyHashMap() { Arrays.fill(data, -1); } public void put(int key, int val) { map[key] = val; } public int get(int key) { return map[key]; } public void remove(int key) { map[key] = -1; } } - hashmap에 맞춰서 데이터를 세팅 할 때 논리 값을 출력 하는 문제 * 출처 Design HashMap - LeetCode Design HashMap - Design a HashMap without using any built-in hash table libraries. Implement the MyHashMap class: * MyHashMap() initializes the objec

JAVA_Design HashMap_LeetCode 706 [내부링크]

JAVA_Design HashMap_LeetCode 706 풀이 class MyHashMap { int[] map; public MyHashMap() { map = new int[1000000+1]; } public void put(int key, int value) { map[key] = value + 1; } public int get(int key) { return map[key] - 1; } public void remove(int key) { map[key] = 0; } } * 출처 Design HashMap - LeetCode Design HashMap - Design a HashMap without using any built-in hash table libraries. Implement the MyHashMap class: * MyHashMap() initializes the object with an empty map. * void put(int key, int va

JAVA_To Lower Case_LeetCode 709 [내부링크]

JAVA_To Lower Case_LeetCode 709 풀이 class Solution { public String toLowerCase(String s) { return s.toLowerCase(); } } * 출처 To Lower Case - LeetCode To Lower Case - Given a string s, return the string after replacing every uppercase letter with the same lowercase letter. Example 1: Input: s = "Hello" Output: "hello" Example 2: Input: s = "here" Output: "here" Example 3: Input: s = "LOVELY" Output: "lovely" Constraints: * 1 <= s.length <= 100... leetcode.com

JAVA_1-bit and 2-bit Characters_LeetCode 717 [내부링크]

JAVA_1-bit and 2-bit Characters_LeetCode 717 풀이 class Solution { public boolean isOneBitCharacter(int[] bits) { int i = 0; while (i < bits.length - 1) { i = (bits[i] == 1) ? i + 2 : i + 1; } return i == bits.length - 1; } } * 출처 1-bit and 2-bit Characters - LeetCode 1-bit and 2-bit Characters - We have two special characters: * The first character can be represented by one bit 0. * The second character can be represented by two bits (10 or 11). Given a binary array bits that ends with 0, return

JAVA_Find Pivot Index_LeetCode 724 [내부링크]

JAVA_Find Pivot Index_LeetCode 724 풀이 class Solution { public int pivotIndex(int[] nums) { int total = 0, temp = 0; for (int num : nums) total += num; for (int i = 0; i < nums.length; temp += nums[i++]) if (nums[i]==total-2*temp) return i; return -1; } } * 출처 Find Pivot Index - LeetCode Can you solve this real interview question? Find Pivot Index - Given an array of integers nums, calculate the pivot index of this array. The pivot index is the index where the sum of all the numbers strictly to t

JAVA_Two Sum IV - Input is a BST_LeetCode 653 [내부링크]

JAVA_Two Sum IV - Input is a BST_LeetCode 653 풀이 class Solution { Set<Integer> res = new HashSet<>(); public boolean findTarget(TreeNode root, int k) { if(root == null) return false; if(res.contains(k-root.val)) return true; res.add(root.val); return findTarget(root.left,k) || findTarget(root.right,k); } } * 출처 Two Sum IV - Input is a BST - LeetCode Two Sum IV - Input is a BST - Given the root of a binary search tree and an integer k, return true if there exist two elements in the BST such that

JAVA_Robot Return to Origin_LeetCode 657 [내부링크]

JAVA_Robot Return to Origin_LeetCode 657 풀이 class Solution { public boolean judgeCircle(String moves) { int[] ch = new int[86]; for (char d : moves.toCharArray()) { ch[d]++; } return ch[68] == ch[85] && ch[76] == ch[82]; } } * 출처 Robot Return to Origin - LeetCode Robot Return to Origin - There is a robot starting at the position (0, 0), the origin, on a 2D plane. Given a sequence of its moves, judge if this robot ends up at (0, 0) after it completes its moves. You are given a string moves that r

JAVA_Image Smoother_LeetCode 661 [내부링크]

JAVA_Image Smoother_LeetCode 661 풀이 class Solution { public int[][] imageSmoother(int[][] img) { int[][] result = new int[img.length][img[0].length]; for(int i =0; i< img.length; i++){ for(int j=0; j<img[i].length; j++){ result[i][j] = findAverage(img, i, j); } } return result; } private static int findAverage(int[][] img, int row, int col){ int tot = 0; int totPoint = 0; for(int i = row - 1; i <= row+1; i++){ for(int j=col-1; j <= col +1; j++){ if(i >=0 && i < img.length && j >=0 && j < img[i].

JAVA_Second Minimum Node In a Binary Tree_LeetCode 671 [내부링크]

JAVA_Second Minimum Node In a Binary Tree_LeetCode 671 풀이 class Solution { int min = Integer.MAX_VALUE; int min2 = Integer.MAX_VALUE; boolean chk = false; public int findSecondMinimumValue(TreeNode root) { if(root == null) return 0; if(root.val < min) { min = root.val; } if(root.val > min && root.val <= min2) { chk = true; min2 = root.val; } findSecondMinimumValue(root.left); findSecondMinimumValue(root.right); return !chk ? -1 : min2 ; } } * 출처 Second Minimum Node In a Binary Tree - LeetCode Se

JAVA_Longest Continuous Increasing Subsequence_LeetCode 674 [내부링크]

JAVA_Longest Continuous Increasing Subsequence_LeetCode 674 풀이 class Solution { public int findLengthOfLCIS(int[] nums) { int num = 1; int num2 = 1; for(int i = 1; i < nums.length; i++) { num2 = nums[i] > nums[i - 1] ? num2 + 1 : 1; num = Math.max(num, num2); } return nums.length == 0 ? 0 : num; } } * 출처 Longest Continuous Increasing Subsequence - LeetCode Longest Continuous Increasing Subsequence - Given an unsorted array of integers nums, return the length of the longest continuous increasing

JAVA_Valid Palindrome II_LeetCode 680 [내부링크]

JAVA_Valid Palindrome II_LeetCode 680 풀이 class Solution { public boolean validPalindrome(String s) { int left = 0; int right = s.length() - 1; while (left < right) { if (s.charAt(left) != s.charAt(right)) return chk(left + 1, right, s) || chk(left, right - 1, s); left++; right--; } return true; } private boolean chk(int left, int right, String s) { while (left < right) { if (s.charAt(left++) != s.charAt(right--)) return false; } return true; } } * 출처 Valid Palindrome II - LeetCode Valid Palindro

JAVA_Baseball Game_LeetCode 682 [내부링크]

JAVA_Baseball Game_LeetCode 682 풀이 class Solution { public int calPoints(String[] operations) { Stack<Integer> stack = new Stack<>(); for (String s : operations) { if (s.equals("+")) { int a = stack.pop(); int newScore = a + stack.peek(); stack.push(a); stack.push(newScore); }else if (s.equals("D")) { stack.push(2 * stack.peek()); }else if (s.equals("C")) { stack.pop(); }else stack.push(Integer.parseInt(s)); } int totalScore = 0; while (!stack.isEmpty()) totalScore += stack.pop(); return totalSc

JAVA_Binary Number with Alternating Bits_LeetCode 693 [내부링크]

JAVA_Binary Number with Alternating Bits_LeetCode 693 풀이 class Solution { public boolean hasAlternatingBits(int n) { String str = Integer.toBinaryString(n); for(int i = 0;i < str.length() - 1;i++){ if(str.charAt(i) == str.charAt(i + 1)) return false; } return true; } } * 출처 Binary Number with Alternating Bits - LeetCode Binary Number with Alternating Bits - Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values. Example 1:

JAVA_Count Binary Substrings_LeetCode 696 [내부링크]

JAVA_Count Binary Substrings_LeetCode 696 풀이 class Solution { public int countBinarySubstrings(String s) { int num1 = 1, num2 = 0, cnt = 0; for (int i = 1; i < s.length(); i++) { if (s.charAt(i) == s.charAt(i - 1)){ num1++; } else { cnt += Math.min(num1, num2); num2 = num1; num1 = 1; } } return cnt + Math.min(num1, num2); } } * 출처 Count Binary Substrings - LeetCode Count Binary Substrings - Given a binary string s, return the number of non-empty substrings that have the same number of 0's and 1'

JAVA_Degree of an Array_LeetCode 697 [내부링크]

JAVA_Degree of an Array_LeetCode 697 풀이 class Solution { public int findShortestSubArray(int[] nums) { HashMap<Integer,Integer> map = new HashMap<>(); HashMap<Integer,Integer> map2 = new HashMap<>(); int degree = 0; int res = 0; for(int i = 0;i < nums.length;i++){ map2.putIfAbsent(nums[i],i); map.put(nums[i],map.getOrDefault(nums[i],0) + 1); if(map.get(nums[i]) > degree){ degree = map.get(nums[i]); res = i - map2.get(nums[i])+1; }else if(map.get(nums[i])== degree){ res = Math.min(res , i-map2.ge

JAVA_Construct String from Binary Tree_LeetCode 606 [내부링크]

JAVA_Construct String from Binary Tree_LeetCode 606 풀이 class Solution { public String tree2str(TreeNode root) { if(root == null) return ""; if(root.left==null && root.right==null) return root.val + ""; if(root.right == null) return root.val + "(" + tree2str(root.left) + ")"; return root.val + "(" + tree2str(root.left) + ")(" + tree2str(root.right) + ")"; } } * 출처 Construct String from Binary Tree - LeetCode Construct String from Binary Tree - Given the root of a binary tree, construct a string c

JAVA_Merge Two Binary Trees_LeetCode 617 [내부링크]

JAVA_Merge Two Binary Trees_LeetCode 617 풀이 class Solution { public TreeNode mergeTrees(TreeNode root1, TreeNode root2) { if (root1 == null && root2 == null) return null; else if (root1 == null) return root2; else if (root2 == null) return root1; return new TreeNode(root1.val + root2.val, mergeTrees(root1.left, root2.left), mergeTrees(root1.right, root2.right)); } } * 출처 Merge Two Binary Trees - LeetCode Merge Two Binary Trees - You are given two binary trees root1 and root2. Imagine that when y

JAVA_Maximum Product of Three Numbers_LeetCode 628 [내부링크]

JAVA_Maximum Product of Three Numbers_LeetCode 628 풀이 class Solution { public int maximumProduct(int[] nums) { Arrays.sort(nums); int n = nums.length; return Math.max(nums[n-1] * nums[n-2] * nums[n-3] , nums[0] * nums[1] * nums[n-1]); } } * 출처 Maximum Product of Three Numbers - LeetCode Maximum Product of Three Numbers - Given an integer array nums, find three numbers whose product is maximum and return the maximum product. Example 1: Input: nums = [1,2,3] Output: 6 Example 2: Input: nums = [1,2

JAVA_Average of Levels in Binary Tree_LeetCode 637 [내부링크]

JAVA_Average of Levels in Binary Tree_LeetCode 637 풀이 class Solution { public List<Double> averageOfLevels(TreeNode root) { Queue<TreeNode> q = new LinkedList<>(List.of(root)); List<Double> ans = new ArrayList<>(); while (q.size() > 0) { double len = q.size(), row = 0; for (int i = 0; i < len; i++) { TreeNode curr = q.poll(); row += curr.val; if (curr.left != null) q.offer(curr.left); if (curr.right != null) q.offer(curr.right); } ans.add(row/len); } return ans; } } * 출처 Average of Levels in Bin

JAVA_Maximum Average Subarray I_LeetCode 643 [내부링크]

JAVA_Maximum Average Subarray I_LeetCode 643 풀이 class Solution { public double findMaxAverage(int[] nums, int k) { double max = Integer.MIN_VALUE; double avg = 0; double sum = 0; for(int i = 0; i<nums.length; i++) { sum += nums[i]; if(i >= k - 1) { avg = sum / k; max = Math.max(max,avg); sum -= nums[i - (k - 1)]; } } return max; } } * 출처 Maximum Average Subarray I - LeetCode Maximum Average Subarray I - You are given an integer array nums consisting of n elements, and an integer k. Find a contig

JAVA_Set Mismatch_LeetCode 645 [내부링크]

JAVA_Set Mismatch_LeetCode 645 풀이 class Solution { public int[] findErrorNums(int[] nums) { int[] res = new int[2]; for (int i = 0; i < nums.length; i++) { int index = Math.abs(nums[i]) - 1; if (nums[index] < 0) res[0] = (index + 1); else nums[index] = -1 * nums[index]; } for (int i = 0; i < nums.length; i++) { if (nums[i] > 0) res[1] = (i + 1); } return res; } } * 출처 Set Mismatch - LeetCode Set Mismatch - You have a set of integers s, which originally contains all the numbers from 1 to n. Unfor

JAVA_Reverse String II_LeetCode 541 [내부링크]

JAVA_Reverse String II_LeetCode 541 풀이 class Solution { public String reverseStr(String s, int k) { StringBuilder str = new StringBuilder(s); for (int index = 0; index < s.length(); index += k << 1) { int leftIndex = index - 1, rightIndex = Math.min(index + k, s.length()); while (++leftIndex < --rightIndex) { str.setCharAt(leftIndex, s.charAt(rightIndex)); str.setCharAt(rightIndex, s.charAt(leftIndex)); } } return str.toString(); } } * 출처 Reverse String II - LeetCode Reverse String II - Given a

JAVA_Diameter of Binary Tree_LeetCode 543 [내부링크]

JAVA_Diameter of Binary Tree_LeetCode 543 풀이 class Solution { private int len = 0; public int diameterOfBinaryTree(TreeNode root) { diameter(root); return len; } private int diameter(TreeNode root){ if (root == null) return 0; int left_height = diameter(root.left); int right_height = diameter(root.right); len = Math.max(len , left_height+right_height); return Math.max(left_height , right_height) + 1; } } * 출처 Diameter of Binary Tree - LeetCode Diameter of Binary Tree - Given the root of a binary

JAVA_Student Attendance Record I_LeetCode 551 [내부링크]

JAVA_Student Attendance Record I_LeetCode 551 풀이 class Solution { public boolean checkRecord(String s) { return !s.contains("LLL") && s.indexOf('A') == s.lastIndexOf('A'); } } * 출처 Student Attendance Record I - LeetCode Student Attendance Record I - You are given a string s representing an attendance record for a student where each character signifies whether the student was absent, late, or present on that day. The record only contains the following three characters: * 'A': Absent. * 'L': Late.

JAVA_Reverse Words in a String III_LeetCode 557 [내부링크]

JAVA_Reverse Words in a String III_LeetCode 557 풀이 class Solution { public String reverseWords(String s) { String[] str = s.split(" "); for (int i = 0; i < str.length; i++) { str[i] = new StringBuilder(str[i]).reverse().toString(); } return String.join(" ", str); } } * 출처 Reverse Words in a String III - LeetCode Reverse Words in a String III - Given a string s, reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. Example 1: Inpu

JAVA_Maximum Depth of N-ary Tree_LeetCode 559 [내부링크]

JAVA_Maximum Depth of N-ary Tree_LeetCode 559 풀이 class Solution { public int maxDepth(Node root) { if(root==null) return 0; int max=0; for(Node child:root.children) max=Math.max(max,maxDepth(child)); return max+1; } } * 출처 Maximum Depth of N-ary Tree - LeetCode Maximum Depth of N-ary Tree - Given a n-ary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. Nary-Tree input serialization is represented in t

JAVA_Array Partition_LeetCode 561 [내부링크]

JAVA_Array Partition_LeetCode 561 풀이 class Solution { public int arrayPairSum(int[] nums) { Arrays.sort(nums); int result = 0; for(int num = 0; num < nums.length; num += 2){ result += nums[num]; } return result; } } * 출처 Array Partition - LeetCode Array Partition - Given an integer array nums of 2n integers, group these integers into n pairs (a1, b1), (a2, b2), ..., (an, bn) such that the sum of min(ai, bi) for all i is maximized. Return the maximized sum. Example 1: Input: nums = [1,4,3,2] Outp

JAVA_Relative Ranks_LeetCode 506 [내부링크]

JAVA_Relative Ranks_LeetCode 506 풀이 class Solution { public String[] findRelativeRanks(int[] score) { Map<Integer,Integer> map = new TreeMap<>(); for(int i=0 ; i< score.length ; i++){ map.put(score[i],i); } int i = 0; String[] rank = new String[score.length]; for(Integer val: map.values()){ if(i == score.length -3){ rank[val] = "Bronze Medal"; }else if(i == score.length -2){ rank[val] = "Silver Medal"; }else if(i == score.length -1){ rank[val] = "Gold Medal"; }else{ rank[val] = String.valueOf(sc

JAVA_Teemo Attacking_LeetCode 495 [내부링크]

JAVA_Teemo Attacking_LeetCode 495 풀이 class Solution { public int findPoisonedDuration(int[] timeSeries, int duration) { int ans=duration; for(int i=1;i<timeSeries.length;i++){ ans = (timeSeries[i-1] + duration - 1 < timeSeries[i]) ? ans + duration : ans + timeSeries[i] - timeSeries[i-1]; } return ans; } } * 출처 Teemo Attacking - LeetCode Teemo Attacking - Our hero Teemo is attacking an enemy Ashe with poison attacks! When Teemo attacks Ashe, Ashe gets poisoned for a exactly duration seconds. More

JAVA_Next Greater Element I_LeetCode 496 [내부링크]

JAVA_Next Greater Element I_LeetCode 496 풀이 class Solution { public int[] nextGreaterElement(int[] nums1, int[] nums2) { int[] ans = new int[nums1.length]; Stack<Integer> stack = new Stack<>(); HashMap<Integer, Integer> map = new HashMap<>(); for(int num : nums2) { while(!stack.isEmpty() && num > stack.peek()) map.put(stack.pop(), num); stack.add(num); } int i = 0; for(int num : nums1) { ans[i++] = map.getOrDefault(num, -1); } return ans; } } * 출처 Next Greater Element I - LeetCode Next Greater E

JAVA_Perfect Number_LeetCode 507 [내부링크]

JAVA_Perfect Number_LeetCode 507 풀이 class Solution { public boolean checkPerfectNumber(int num) { if(num == 1) return false; int sum = 1; for(int i=2; i<=Math.sqrt(num); i++){ if(num%i == 0) sum+=i + num/i; } return sum == num; } } * 출처 Perfect Number - LeetCode Perfect Number - A perfect number [https://en.wikipedia.org/wiki/Perfect_number] is a positive integer that is equal to the sum of its positive divisors, excluding the number itself. A divisor of an integer x is an integer that can divid

JAVA_Fibonacci Number_LeetCode 509 [내부링크]

JAVA_Fibonacci Number_LeetCode 509 풀이 class Solution { public int fib(int n) { if(n <= 1) return n; int a = 0, b = 1; for(int i = 2;i <= n;i++) { int sum = a + b; a = b; b = sum; } return b; } } * 출처 Fibonacci Number - LeetCode Fibonacci Number - The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such that each number is the sum of the two preceding ones, starting from 0 and 1. That is, F(0) = 0, F(1) = 1 F(n) = F(n - 1) + F(n - 2), for n > 1. Given n, c

JAVA_Detect Capital_LeetCode 520 [내부링크]

JAVA_Detect Capital_LeetCode 520 풀이 class Solution { public boolean detectCapitalUse(String word) { int cnt = 0; for(char ch : word.toCharArray()) { if(Character.isUpperCase(ch)) cnt++; } if(cnt == word.length() || cnt == 0) return true; return cnt == 1 && Character.isUpperCase(word.charAt(0)); } } * 출처 Detect Capital - LeetCode Detect Capital - We define the usage of capitals in a word to be right when one of the following cases holds: * All letters in this word are capitals, like "USA". * All

JAVA_Longest Uncommon Subsequence I_LeetCode 521 [내부링크]

JAVA_Longest Uncommon Subsequence I_LeetCode 521 풀이 class Solution { public int findLUSlength(String a, String b) { return a.equals(b) ? -1 : Math.max(a.length(), b.length()); } } * 출처 Longest Uncommon Subsequence I - LeetCode Longest Uncommon Subsequence I - Given two strings a and b, return the length of the longest uncommon subsequence between a and b. If the longest uncommon subsequence does not exist, return -1. An uncommon subsequence between two strings is a string that is a subsequence o

JAVA_Minimum Absolute Difference in BST_LeetCode 530 [내부링크]

JAVA_Minimum Absolute Difference in BST_LeetCode 530 풀이 class Solution { Integer ans = Integer.MAX_VALUE; TreeNode prev; public int getMinimumDifference(TreeNode root) { dfs(root); return ans; } public void dfs(TreeNode node) { if (node == null) return; dfs(node.left); if (prev != null) { ans = Math.min(ans, node.val - prev.val); } prev = node; dfs(node.right); } } * 출처 Minimum Absolute Difference in BST - LeetCode Minimum Absolute Difference in BST - Given the root of a Binary Search Tree (BST)

JAVA_Hamming Distance_LeetCode 461 [내부링크]

JAVA_Hamming Distance_LeetCode 461 풀이 class Solution { public int hammingDistance(int x, int y) { return Integer.bitCount(x^y); } } * 출처 Hamming Distance - LeetCode Hamming Distance - The Hamming distance [https://en.wikipedia.org/wiki/Hamming_distance] between two integers is the number of positions at which the corresponding bits are different. Given two integers x and y, return the Hamming distance between them. Example 1: Input: x = 1, y = 4 Output: 2 Exp... leetcode.com

JAVA_Island Perimeter_LeetCode 463 [내부링크]

JAVA_Island Perimeter_LeetCode 463 풀이 class Solution { public int islandPerimeter(int[][] grid) { int cnt=0; for(int i = 0;i < grid.length;i++){ for(int j = 0;j < grid[i].length;j++){ if(grid[i][j] == 1){ cnt+=4; if(i > 0 && grid[i-1][j] == 1) cnt-=2; if(j > 0 && grid[i][j-1] == 1) cnt-=2; } } } return cnt; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Number Complement_LeetCode 476 [내부링크]

JAVA_Number Complement_LeetCode 476 풀이 class Solution { public int findComplement(int num) { return ~num & (Integer.highestOneBit(num) - 1); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_License Key Formatting_LeetCode 482 [내부링크]

JAVA_License Key Formatting_LeetCode 482 풀이 class Solution { public String licenseKeyFormatting(String s, int k) { StringBuilder sb = new StringBuilder(); for (int i = s.length() - 1; i >= 0; i--) { if (s.charAt(i) != '-') { if (sb.length() % (k + 1) == k) { sb.append('-'); } sb.append(Character.toUpperCase(s.charAt(i))); } } return sb.reverse().toString(); } } * 출처 License Key Formatting - LeetCode License Key Formatting - You are given a license key represented as a string s that consists of o

JAVA_Max Consecutive Ones_LeetCode 485 [내부링크]

JAVA_Max Consecutive Ones_LeetCode 485 풀이 class Solution { public int findMaxConsecutiveOnes(int[] nums) { int max=0 ,cnt =0; for(int n : nums) max=Math.max(max,cnt = n == 0 ? 0 : cnt+1); return max; } } * 출처 Max Consecutive Ones - LeetCode Max Consecutive Ones - Given a binary array nums, return the maximum number of consecutive 1's in the array. Example 1: Input: nums = [1,1,0,1,1,1] Output: 3 Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of

JAVA_Construct the Rectangle_LeetCode 492 [내부링크]

JAVA_Construct the Rectangle_LeetCode 492 풀이 class Solution { public int[] constructRectangle(int area) { for(int j = (int)Math.sqrt(area);j >= 1;j--){ if(area % j == 0) return new int[]{area / j, j}; } return null; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Keyboard Row_LeetCode 500 [내부링크]

JAVA_Keyboard Row_LeetCode 500 풀이 class Solution { public String[] findWords(String[] words) { List<String> result = new ArrayList<>(); String[] levels = {"qwertyuiop", "asdfghjkl", "zxcvbnm"}; for (String str : words) { for (String level : levels) { int lettersCount = str.length(); for (int k = 0; k < str.length(); k++) { char c = Character.toLowerCase(str.charAt(k)); if (level.indexOf(c) < 0) { break; } lettersCount--; } if (lettersCount == 0) { result.add(str); break; } } } return result.toAr

JAVA_Find Mode in Binary Search Tree_LeetCode 501 [내부링크]

JAVA_Find Mode in Binary Search Tree_LeetCode 501 풀이 class Solution { Map<Integer,Integer> map = new HashMap<>(); public int[] findMode(TreeNode root) { dfs(root); int max = 0; List<Integer> k= new ArrayList<>(); for(int i : map.values()) max = Math.max(i,max); for(int key: map.keySet()){ if(map.get(key)==max) k.add(key); } int[] ans = new int[k.size()]; for(int i = 0;i<k.size();i++){ ans[i] = k.get(i); } return ans; } public void dfs(TreeNode root){ if (root==null) return; map.put(root.val,map.

JAVA_Base 7_LeetCode 504 [내부링크]

JAVA_Base 7_LeetCode 504 풀이 class Solution { public String convertToBase7(int num) { return Integer.toString(num, 7); } } * 출처 Base 7 - LeetCode Base 7 - Given an integer num, return a string of its base 7 representation. Example 1: Input: num = 100 Output: "202" Example 2: Input: num = -7 Output: "-10" Constraints: * -107 <= num <= 107 leetcode.com

JAVA_Fizz Buzz_LeetCode 412 [내부링크]

JAVA_Fizz Buzz_LeetCode 412 풀이 class Solution { public List<String> fizzBuzz(int n) { List ans = new ArrayList<>(); for(int i = 1; i <= n; i++){ ans.add( i % 15 == 0 ? "FizzBuzz" : i % 5 == 0 ? "Buzz" : i % 3 == 0 ? "Fizz" : String.valueOf(i) ); } return ans; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Third Maximum Number_LeetCode 414 [내부링크]

JAVA_Third Maximum Number_LeetCode 414 풀이 class Solution { public int thirdMax(int[] nums) { Set<Integer> hash = new HashSet<>(); for (int num : nums) { hash.add(num); } if (hash.size() >= 3) { hash.remove(Collections.max(hash)); hash.remove(Collections.max(hash)); } return Collections.max(hash); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Add Strings_LeetCode 415 [내부링크]

JAVA_Add Strings_LeetCode 415 풀이 class Solution { public String addStrings(String num1, String num2) { int i = num1.length() - 1; int k = num2.length() - 1; int res = 0; StringBuilder sb = new StringBuilder(); while(i >= 0 || k >= 0){ int n1 = i < 0 ? 0 : num1.charAt(i--) - '0'; int n2 = k < 0 ? 0 : num2.charAt(k--) - '0'; int sum = n1 + n2 + res; sb.append(sum % 10); res = sum > 9 ? 1 : 0; } if(res > 0) sb.append(1); return sb.reverse().toString(); } } * 출처 Level up your coding skills and quick

JAVA_Number of Segments in a String_LeetCode 434 [내부링크]

JAVA_Number of Segments in a String_LeetCode 434 풀이 class Solution { public int countSegments(String s) { return s.trim().length() == 0 ? 0 : s.trim().split("\\s+").length; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Arranging Coins_LeetCode 441 [내부링크]

JAVA_Arranging Coins_LeetCode 441 풀이 class Solution { public int arrangeCoins(int n) { int res =0; for(res=1;res<=n;res++){ n=n-res; } return res-1; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Find All Numbers Disappeared in an Array_LeetCode 448 [내부링크]

JAVA_Find All Numbers Disappeared in an Array_LeetCode 448 풀이 class Solution { public List<Integer> findDisappearedNumbers(int[] nums) { int[] res = new int[nums.length + 1]; for (int num : nums) { res[num] = num; } List<Integer> result = new ArrayList<>(res.length); for (int i = 1; i < res.length; i++) { if (res[i] == 0) { result.add(i); } } return result; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next

JAVA_Assign Cookies_LeetCode 455 [내부링크]

JAVA_Assign Cookies_LeetCode 455 풀이 class Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); Arrays.sort(s); int count = 0; for(int i = g.length-1 , j = s.length-1; j >= 0 && i >= 0 ;i--) { if(s[j] >= g[i]) { count++; j--; } } return count; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Repeated Substring Pattern_LeetCode 459 [내부링크]

JAVA_Repeated Substring Pattern_LeetCode 459 풀이 class Solution { public boolean repeatedSubstringPattern(String s) { return (s + s).indexOf(s, 1) < s.length(); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Ransom Note_LeetCode 383 [내부링크]

JAVA_Ransom Note_LeetCode 383 풀이 class Solution { public boolean canConstruct(String ransomNote, String magazine) { if (ransomNote.length() > magazine.length()) return false; int[] cnt = new int[26]; for (char c : magazine.toCharArray()) cnt[c-'a']++; for (char c : ransomNote.toCharArray()){ if (cnt[c-'a'] == 0) return false; cnt[c-'a']--; } return true; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next int

JAVA_First Unique Character in a String_LeetCode 387 [내부링크]

JAVA_First Unique Character in a String_LeetCode 387 풀이 class Solution { public int firstUniqChar(String s) { for(char c : s.toCharArray()){ int index = s.indexOf(c); int lastIndex = s.lastIndexOf(c); if(index == lastIndex) return index; } return -1; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Find the Difference_LeetCode 389 [내부링크]

JAVA_Find the Difference_LeetCode 389 풀이 class Solution { public char findTheDifference(String s, String t) { char c = 0; for(char c1 : s.toCharArray()) c ^= c1; for(char c2 : t.toCharArray()) c ^= c2; return c; } } ^ 연산자(XOR)를 이용한 문제풀이 * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Is Subsequence_LeetCode 392 [내부링크]

JAVA_Is Subsequence_LeetCode 392 풀이 class Solution { public boolean isSubsequence(String s, String t) { int j = 0; for(int i = 0; i < t.length() && j < s.length(); i++){ if(s.charAt(j) == t.charAt(i)) j++; } return j == s.length(); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Binary Watch_LeetCode 401 [내부링크]

JAVA_Binary Watch_LeetCode 401 풀이 class Solution { public List<String> readBinaryWatch(int turnedOn) { List<String> time = new ArrayList<>(); for (int h=0; h<12; h++){ for (int m=0; m<60; m++){ if (Integer.bitCount(h * 64 + m) == turnedOn) time.add(String.format("%d:%02d", h, m)); } } return time; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Longest Palindrome_LeetCode 409 [내부링크]

JAVA_Longest Palindrome_LeetCode 409 풀이 class Solution { public int longestPalindrome(String s) { HashMap<Character, Integer> map = new HashMap(); for(int i=0; i<s.length(); i++){ char temp = s.charAt(i); if(map.get(temp) != null){ map.remove(temp); }else{ map.put(temp, i); } } if(map.size() <= 1) return s.length(); return s.length() - map.size() + 1; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interv

JAVA_Sum of Left Leaves_LeetCode 404 [내부링크]

JAVA_Sum of Left Leaves_LeetCode 404 풀이 class Solution { public int sumOfLeftLeaves(TreeNode root) { if (root == null) return 0; int sum = 0; sum += (root.left != null && root.left.left == null && root.left.right == null) ? root.left.val : sumOfLeftLeaves(root.left); sum += sumOfLeftLeaves(root.right); return sum; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Convert a Number to Hexadecimal_LeetCode 405 [내부링크]

JAVA_Convert a Number to Hexadecimal_LeetCode 405 풀이 class Solution { public String toHex(int num) { if (num == 0) return "0"; StringBuilder sb = new StringBuilder(); while(num != 0) { int hexDigit = num & 0xF; if (hexDigit < 10) sb.append(hexDigit); else sb.append((char)('a' + hexDigit - 10)); num = num >>> 4; } return sb.reverse().toString(); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. le

JAVA_Power of Three_LeetCode 326 [내부링크]

JAVA_Power of Three_LeetCode 326 풀이 class Solution { public boolean isPowerOfThree(int n) { return (Math.log10(n) / Math.log10(3)) % 1 == 0; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Counting Bits_LeetCode 338 [내부링크]

JAVA_Counting Bits_LeetCode 338 풀이 class Solution { public int[] countBits(int n) { int[] num = new int[n + 1]; for(int i = 1; i <= n; i++){ num[i] = num[i/2]; if(i%2 == 1) num[i]++; } return num; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Power of Four_LeetCode 342 [내부링크]

JAVA_Power of Four_LeetCode 342 풀이 class Solution { public boolean isPowerOfFour(int n) { return (Math.log(n) / Math.log(4)) % 1 == 0; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Reverse String_LeetCode 344 [내부링크]

JAVA_Reverse String_LeetCode 344 풀이 class Solution { public void reverseString(char[] s) { for(int i=0 ; i <s.length/2 ; i++){ char temp = s[i]; s[i] = s[s.length-1-i]; s[s.length-1-i] = temp; } } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Reverse Vowels of a String_LeetCode 345 [내부링크]

JAVA_Reverse Vowels of a String_LeetCode 345 풀이 class Solution { public String reverseVowels(String s) { int x=0; int y=s.length()-1; List<Character> list=Arrays.asList('a','e','i','o','u','A','E','I','O','U'); char[] arr=s.toCharArray(); while(x<y){ if(!list.contains(arr[x])){ x++; } if(!list.contains(arr[y])){ y--; } if(list.contains(arr[x]) && list.contains(arr[y])){ char temp=arr[x]; arr[x]=arr[y]; arr[y]=temp; x++; y--; } } return new String(arr); } } * 출처 Level up your coding skills and qu

JAVA_Intersection of Two Arrays_LeetCode 349 [내부링크]

JAVA_Intersection of Two Arrays_LeetCode 349 풀이 class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set1 = new HashSet(); Set<Integer> set2 = new HashSet(); for(int i : nums1) set1.add(i); for(int i : nums2) set2.add(i); set1.retainAll(set2); int n = set1.size(); int[] res = new int[n]; int index = 0; for(int i : set1) res[index++] = i; return res; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get

JAVA_Intersection of Two Arrays II_LeetCode 350 [내부링크]

JAVA_Intersection of Two Arrays II_LeetCode 350 풀이 class Solution { public int[] intersect(int[] nums1, int[] nums2) { if(nums1.length==0) return nums1; if(nums2.length==0) return nums2; Arrays.sort(nums1); Arrays.sort(nums2); int i=0,j=0,k=0; while(i<nums1.length && j<nums2.length){ if(nums1[i]<nums2[j] ) i++; else if(nums2[j]<nums1[i]) j++; else if(nums1[i]==nums2[j]){ nums1[k++]=nums1[i]; i++; j++; } } return Arrays.copyOfRange(nums1, 0, k); } } * 출처 Level up your coding skills and quickly la

JAVA_Valid Perfect Square_LeetCode 367 [내부링크]

JAVA_Valid Perfect Square_LeetCode 367 풀이 class Solution { public boolean isPerfectSquare(int num) { double sqrt = Math.sqrt(num); return ((sqrt - Math.floor(sqrt)) == 0); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Guess Number Higher or Lower_LeetCode 374 [내부링크]

JAVA_Guess Number Higher or Lower_LeetCode 374 풀이 public class Solution extends GuessGame { public int guessNumber(int n) { return binarySearch(1,n); } public int binarySearch(int low,int high){ int mid=low+(high-low)/2; if(guess(mid)==0) return mid; if(guess(mid)==1){ return binarySearch(mid+1,high); }else{ return binarySearch(low,mid-1); } } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetc

JAVA_Word Pattern_LeetCode 290 [내부링크]

JAVA_Word Pattern_LeetCode 290 풀이 class Solution { public boolean wordPattern(String pattern, String s) { if(pattern.length() != s.split(" ").length) return false; for(int i=0; i<pattern.length(); i++){ for(int j=i+1; j<pattern.length(); j++){ if(pattern.charAt(j)==pattern.charAt(i)){ if(!s.split(" ")[j].equals(s.split(" ")[i])) return false; }else if(s.split(" ")[j].equals(s.split(" ")[i])) return false; } } return true; } } * 출처 Level up your coding skills and quickly land a job. This is the b

JAVA_Nim Game_LeetCode 292 [내부링크]

JAVA_Nim Game_LeetCode 292 풀이 class Solution { public boolean canWinNim(int n) { return (n % 4 != 0); } } * 출처 https://leetcode.com/problems/nim-game/ Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_First Bad Version_LeetCode 278 [내부링크]

JAVA_First Bad Version_LeetCode 278 풀이 public class Solution extends VersionControl { public int firstBadVersion(int n) { int start = 1; int end = n; while (start <= end) { int mid = start + (end - start) / 2; if (isBadVersion(mid)) { end = mid - 1; } else { start = mid + 1; } } return start; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Range Sum Query_Immutable_LeetCode 303 [내부링크]

JAVA_Range Sum Query_Immutable_LeetCode 303 풀이 class NumArray { int[] num; public NumArray(int[] nums) { num = nums; for (int i = 1; i < nums.length; i++) { num[i] += num[i - 1]; } } public int sumRange(int left, int right) { return left == 0 ? num[right] : num[right] - num[left - 1]; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Move Zeroes_LeetCode 283 [내부링크]

JAVA_Move Zeroes_LeetCode 283 풀이 class Solution { public void moveZeroes(int[] nums) { for (int i = 0, j = 0; j < nums.length; j++) { if (nums[j] != 0) { nums[i] = nums[j]; if (i++ != j) nums[j] = 0; } } } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Power of Two_LeetCode 231 [내부링크]

JAVA_Power of Two_LeetCode 231 풀이 class Solution { public boolean isPowerOfTwo(int n) { if(n<=0) return false; return (n & (n-1)) == 0; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Implement Queue using Stacks_LeetCode 232 [내부링크]

JAVA_Implement Queue using Stacks_LeetCode 232 풀이 class MyQueue { Stack<Integer> s1 = new Stack<>(); Stack<Integer> s2 = new Stack<>(); public void push(int x) { while(!s1.isEmpty()){ s2.push(s1.pop()); } s1.push(x); while(!s2.isEmpty()){ s1.push(s2.pop()); } } public int pop() { if(s1.isEmpty()){ return -1; } return s1.pop(); } public int peek() { if(s1.isEmpty()){ return -1; } return s1.peek(); } public boolean empty() { return s1.isEmpty(); } } * 출처 Level up your coding skills and quickly lan

JAVA_Palindrome Linked List_LeetCode 234 [내부링크]

JAVA_Palindrome Linked List_LeetCode 234 풀이 class Solution { ListNode node; public boolean isPalindrome(ListNode head) { if(head == null) return true; if(node == null) node = head; boolean bool = isPalindrome(head.next); if(head.val == node.val) node = node.next; else bool = false; return bool; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Valid Anagram_LeetCode 242 [내부링크]

JAVA_Valid Anagram_LeetCode 242 풀이 class Solution { public boolean isAnagram(String s, String t) { int[] alphabet = new int[26]; for (int i = 0; i < s.length(); i++) alphabet[s.charAt(i) - 'a']++; for (int i = 0; i < t.length(); i++) alphabet[t.charAt(i) - 'a']--; for (int i : alphabet) if (i != 0) return false; return true; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Binary Tree Paths_LeetCode 257 [내부링크]

JAVA_Binary Tree Paths_LeetCode 257 풀이 class Solution { public List<String> binaryTreePaths(TreeNode root) { List<String> answer = new ArrayList<String>(); if (root != null) searchBT(root, "", answer); return answer; } private void searchBT(TreeNode root, String path, List<String> answer) { if (root.left == null && root.right == null) answer.add(path + root.val); if (root.left != null) searchBT(root.left, path + root.val + "->", answer); if (root.right != null) searchBT(root.right, path + root.v

JAVA_Add Digits_LeetCode 258 [내부링크]

JAVA_Add Digits_LeetCode 258 풀이 class Solution { public int addDigits(int num) { return 1 + (num - 1) % 9; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Ugly Number_LeetCode 263 [내부링크]

JAVA_Ugly Number_LeetCode 263 풀이 class Solution { public boolean isUgly(int n) { if (n > 0){ for (int i : new int[] { 2, 3, 5 }) { while (n % i == 0) n /= i; } } return n == 1; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Missing Number_LeetCode 268 [내부링크]

JAVA_Missing Number_LeetCode 268 풀이 class Solution { public int missingNumber(int[] nums) { int res = nums.length; for(int i=0; i<nums.length; i++){ res ^= i; res ^= nums[i]; } return res; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Summary Ranges_LeetCode 228 [내부링크]

JAVA_Summary Ranges_LeetCode 228 풀이 class Solution { public List<String> summaryRanges(int[] nums) { List<String> list = new ArrayList<>(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < nums.length; i++) { int start = nums[i]; while (i + 1 < nums.length && (nums[i + 1] - nums[i]) == 1) i++; sb.append(start); if (nums[i] != start) sb.append("->").append(nums[i]); list.add(sb.toString()); sb.setLength(0); } return list; } } * 출처 https://leetcode.com/problems/summary-ranges/ Level up

JAVA_Minimum Depth of Binary Tree_LeetCode 111 [내부링크]

JAVA_Minimum Depth of Binary Tree_LeetCode 111 Minimum Depth of Binary Tree 풀이 class Solution { public int minDepth(TreeNode root) { if(root == null) return 0; int left = minDepth(root.left); int right = minDepth(root.right); return (left == 0 || right == 0) ? left + right + 1 : Math.min(left, right) + 1; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Path Sum_LeetCode 112 [내부링크]

JAVA_Path Sum_LeetCode 112 풀이 class Solution { public boolean hasPathSum(TreeNode root, int sum) { if(root==null)return false; sum = sum - root.val; if(root.left==null && root.right==null){ boolean bool = sum == 0 ? true : false; return bool; } return hasPathSum(root.left,sum) || hasPathSum(root.right,sum); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Pascal's Triangle_LeetCode 118 [내부링크]

JAVA_Pascal's Triangle_LeetCode 118 Pascal's Triangle 풀이 class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> res = new ArrayList<List<Integer>>(); for (int i = 0; i < numRows; i++) { List<Integer> row = new ArrayList<Integer>(); for (int j = 0; j <= i; j++) if (j == 0 || j == i){ row.add(1); }else{ row.add(res.get(i-1).get(j-1) + res.get(i-1).get(j)); } res.add(row); } return res; } } * 출처 Level up your coding skills and quickly land a job. This is the best pl

JAVA_Pascal's Triangle II_LeetCode 119 [내부링크]

JAVA_Pascal's Triangle II_LeetCode 119 Pascal's Triangle II 풀이 class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> ret = new LinkedList<Integer>(); for (int row = 0; row <= rowIndex; row++) { ret.add(0, 1); for (int i = 1; i < row; i++) ret.set(i, ret.get(i) + ret.get(i + 1)); } return ret; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Best Time to Buy and Sell Stock_LeetCode 121 [내부링크]

JAVA_Best Time to Buy and Sell Stock_LeetCode 121 Best Time to Buy and Sell Stock 풀이 class Solution { public int maxProfit(int[] prices) { int max=0,min=prices[0]; for(int i=1;i<prices.length;i++) { if(min<prices[i]){ max=Math.max(prices[i]-min,max); }else{ min=prices[i]; } } return max; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Remove Duplicates from Sorted List_LeetCode 83 [내부링크]

JAVA_Remove Duplicates from Sorted List_LeetCode 83 Remove Duplicates from Sorted List 풀이 class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null){ return head; } head.next = deleteDuplicates(head.next); return head.next != null && head.val == head.next.val ? head.next : head; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Merge Sorted Array_LeetCode 88 [내부링크]

JAVA_Merge Sorted Array_LeetCode 88 Merge Sorted Array 풀이 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i = m-1; int j = n-1; int k = m+n-1; while(i>=0 && j>=0){ nums1[k--] = nums1[i] < nums2[j] ? nums2[j--] : nums1[i--]; } while(j>=0){ nums1[k--] = nums2[j--]; } } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Binary Tree Inorder Traversal_LeetCode 94 [내부링크]

JAVA_Binary Tree Inorder Traversal_LeetCode 94 Binary Tree Inorder Traversal 풀이 class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> inorder = new ArrayList<>(); inorderTraversal(root, inorder); return inorder; } public void inorderTraversal(TreeNode root, List<Integer> inorder) { if (root == null) return; inorderTraversal(root.left, inorder); inorder.add(root.val); inorderTraversal(root.right, inorder); } } * 출처 Level up your coding skills and quickly land a job

JAVA_Same Tree_LeetCode 100 [내부링크]

JAVA_Same Tree_LeetCode 100 Same Tree 풀이 class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { boolean res = (p == null || q == null) ? p == q : p.val == q.val && isSameTree(p.left,q.left) && isSameTree(p.right,q.right); return res; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Symmetric Tree_LeetCode 101 [내부링크]

JAVA_Symmetric Tree_LeetCode 101 Symmetric Tree 풀이 class Solution { public boolean isSymmetric(TreeNode root) { return symmetricTree( root.left, root.right ); } public boolean symmetricTree(TreeNode left, TreeNode right) { if( left == null || right == null ) return left == right; if( left.val != right.val ) return false; return symmetricTree(left.left, right.right) && symmetricTree(left.right, right.left); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to exp

JAVA_Maximum Depth of Binary Tree_LeetCode 104 [내부링크]

JAVA_Maximum Depth of Binary Tree_LeetCode 104 Maximum Depth of Binary Tree 풀이 class Solution { public int maxDepth(TreeNode root) { return root==null ? 0 : 1 + Math.max(maxDepth(root.left),maxDepth(root.right)); } } * 출처 https://leetcode.com/problems/maximum-depth-of-binary-tree/ Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Convert Sorted Array to Binary Search Tree_LeetCode 108 [내부링크]

JAVA_Convert Sorted Array to Binary Search Tree_LeetCode 108 Convert Sorted Array to Binary Search Tree 풀이 class Solution { public TreeNode sortedArrayToBST(int[] nums) { return addNode(nums, 0, nums.length - 1); } public TreeNode addNode(int[] nums, int left, int right) { if (left > right) return null; int mid = left + ((right - left) / 2); TreeNode tree = new TreeNode(nums[mid]); tree.left = addNode(nums, left, mid - 1); tree.right = addNode(nums, mid + 1, right); return tree; } } * 출처 Level u

JAVA_Balanced Binary Tree_LeetCode 110 [내부링크]

JAVA_Balanced Binary Tree_LeetCode 110 Balanced Binary Tree 풀이 class Solution { public boolean isBalanced(TreeNode root) { return tree(root) != -1; } private int tree(TreeNode node) { if(node == null) return 1; int v1 = tree(node.left); int v2 = tree(node.right); if(v1 == -1 || v2 == -1) return -1; return Math.abs(v1 - v2) > 1 ? -1 : ((int) Math.max(v1, v2)) + 1; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your

JAVA_Remove Element_LeetCode 27 [내부링크]

JAVA_Remove Element_LeetCode 27 Remove Element 풀이 class Solution { public int removeElement(int[] nums, int val) { int i = 0; for (int n : nums){ if (n != val){ nums[i++] = n; } } return i; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Search Insert Position_LeetCode 35 [내부링크]

JAVA_Search Insert Position_LeetCode 35 Search Insert Position 풀이 class Solution { public int searchInsert(int[] nums, int target) { for(int i = 0; i < nums.length; i++){ if(nums[i] >= target) { return i; } } return nums.length; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Length of Last Word_LeetCode 58 [내부링크]

JAVA_Length of Last Word_LeetCode 58 Length of Last Word 풀이 class Solution { public int lengthOfLastWord(String s) { String[] words = s.split(" "); return words[words.length-1].length(); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Plus One_LeetCode 66 [내부링크]

JAVA_Plus One_LeetCode 66 Plus One 풀이 class Solution { public int[] plusOne(int[] digits) { for(int i = digits.length - 1; i >= 0; i--){ if(++digits[i] != 10){ return digits; } digits[i] = 0; } int [] res = new int[digits.length + 1]; res[0] = 1; return res; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Add Binary_LeetCode 67 [내부링크]

JAVA_Add Binary_LeetCode 67 Add Binary 풀이 import java.math.BigInteger; class Solution { public String addBinary(String a, String b) { BigInteger n1 = new BigInteger(a,2); BigInteger n2 = new BigInteger(b,2); BigInteger sum = n1.add(n2); return sum.toString(2); } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Sqrt(x)_LeetCode 69 [내부링크]

JAVA_Sqrt(x)_LeetCode 69 Sqrt(x) 풀이 class Solution { public int mySqrt(int x) { if(x<2) return x; long r = x/2; while (r*r > x) r = (r + x/r) / 2; return (int)r; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Climbing Stairs_LeetCode 70 [내부링크]

JAVA_Climbing Stairs_LeetCode 70 Climbing Stairs 풀이 class Solution { public int climbStairs(int n) { if (n <= 2) { return n; } int prev1 = 1; int prev2 = 2; for (int i = 3; i <= n; i++) { int newValue = prev1 + prev2; prev1 = prev2; prev2 = newValue; } return prev2; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

Python_Arrays_HackerRank [내부링크]

Python_Arrays_HackerRank Arrays 풀이 import numpy def arrays(arr): return(numpy.array(list(reversed(arr)), float)) arr = input().strip().split(' ') result = arrays(arr) print(result) * 출처 Arrays | HackerRank Convert a list to an array using the NumPy package. www.hackerrank.com

JAVA_Two Sum_LeetCode 1 [내부링크]

JAVA_Two Sum_LeetCode 1 Two Sum 풀이 class Solution { public int[] twoSum(int[] nums, int target) { for(int i=0; i< nums.length; i++){ for(int j = i+1; j< nums.length; j++){ if(nums[i] + nums[j] == target){ return new int[]{i,j}; } }; }; return null; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Palindrome Number_LeetCode 9 [내부링크]

JAVA_Palindrome Number_LeetCode 9 Palindrome Number 풀이 class Solution { public boolean isPalindrome(int x) { if(x < 0){ return false; } int cnt=x; int cnt2=0; while(cnt>0){ cnt2 = cnt2*10 + cnt%10; cnt = cnt/10; } return cnt2==x; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Roman to Integer_LeetCode 13 [내부링크]

JAVA_Roman to Integer_LeetCode 13 Roman to Integer 풀이 class Solution { public int romanToInt(String s) { if (s == null || s.length() == 0){ return -1; } HashMap<Character, Integer> map = new HashMap<Character, Integer>(); map.put('I', 1); map.put('V', 5); map.put('X', 10); map.put('L', 50); map.put('C', 100); map.put('D', 500); map.put('M', 1000); int len = s.length(); int res = map.get(s.charAt(len - 1)); for (int i = len - 2; i >= 0; i--) { if (map.get(s.charAt(i)) >= map.get(s.charAt(i + 1)))

JAVA_Longest Common Prefix_LeetCode 14 [내부링크]

JAVA_Longest Common Prefix_LeetCode 14 Longest Common Prefix 풀이 class Solution { public String longestCommonPrefix(String[] strs) { if(strs.length == 0) return ""; String pre=strs[0]; for(int i=1; i<strs.length; i++){ while(strs[i].indexOf(pre) != 0){ pre = pre.substring(0, pre.length()-1); } } return pre; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA_Valid Parentheses_LeetCode 20 [내부링크]

JAVA_Valid Parentheses_LeetCode 20 Valid Parentheses 풀이 class Solution { public boolean isValid(String s) { HashMap map = new HashMap(); map.put('(',')'); map.put('[',']'); map.put('{','}'); Stack<Character> stack = new Stack<>(); for(char c : s.toCharArray()){ if(c == '(' || c == '{' || c == '['){ stack.push(c); }else{ if(stack.isEmpty()){ return false; } if(map.get(stack.pop()).equals(c)){ continue; }else{ return false; } } } return stack.isEmpty(); } } * 출처 Level up your coding skills and qui

JAVA_Merge Two Sorted Lists_LeetCode 21 [내부링크]

JAVA_Merge Two Sorted Lists_LeetCode 21 Merge Two Sorted Lists 풀이 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { if (list1 == null || list2 == null) return list1 == null ? list2 : list1; if (list1.val > list2.val) return mergeTwoLists(

JAVA_Remove Duplicates from Sorted Array_LeetCode 26 [내부링크]

JAVA_Remove Duplicates from Sorted Array_LeetCode 26 Remove Duplicates from Sorted Array 풀이 class Solution { public int removeDuplicates(int[] nums) { int i = 0; for (int n : nums){ if (i == 0 || n > nums[i-1]){ nums[i++] = n; } } return i; } } * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

Python_HTML Parser - Part 2_HackerRank [내부링크]

Python_HTML Parser - Part 2_HackerRank HTML Parser - Part 2 풀이 from html.parser import HTMLParser import re class MyHTMLParser(HTMLParser): def handle_comment(self,data): if re.search(r"\n",data): print(">>> Multi-line Comment") print(data.rstrip()) else: print(">>> Single-line Comment") print(data.rstrip()) def handle_data(self,data): if data != '\n': print(">>> Data") print(re.sub('\n','',data)) html = "" for i in range(int(input())): html += input().rstrip() html += '\n' parser = MyHTMLParser

Python_Detect HTML Tags, Attributes and Attribute Values_HackerRank [내부링크]

Python_Detect HTML Tags, Attributes and Attribute Values_HackerRank Detect HTML Tags, Attributes and Attribute Values 풀이 from html.parser import HTMLParser class MyParser(HTMLParser): def handle_starttag(self, tag, attrs): print(tag) if attrs: print(*(f"-> {i[0]} > {i[1]}" for i in attrs), sep='\n') n = int(input()) html = ''.join([input() for _ in range(n)]) parser = MyParser() parser.feed(html) parser.close() * 출처 Detect HTML Tags, Attributes and Attribute Values | HackerRank Parse HTML tags,

Python_XML 1 - Find the Score_HackerRank [내부링크]

Python_XML 1 - Find the Score_HackerRank XML 1 - Find the Score 풀이 import sys import xml.etree.ElementTree as etree def get_attr_number(node): total = 0 for child in node.iter(): total += len(child.attrib) return total if __name__ == '__main__': sys.stdin.readline() xml = sys.stdin.read() tree = etree.ElementTree(etree.fromstring(xml)) root = tree.getroot() print(get_attr_number(root)) * 출처 XML 1 - Find the Score | HackerRank Learn about XML parsing in Python. www.hackerrank.com

Python_Validating UID_HackerRank [내부링크]

Python_Validating UID_HackerRank Validating UID 풀이 import re t = r'^(?=(?:[a-z\d]*[A-Z]){2})(?=(?:\D*\d){3})(?:([a-zA-Z\d])(?!.*\1)){10}$' for x in range(int(input())): match = re.match(t, input()) if match: print("Valid") else: print("Invalid") * 출처 Validating UID | HackerRank Validate all the randomly generated user identification numbers according to the constraints. www.hackerrank.com

Python_XML2 - Find the Maximum Depth_HackerRank [내부링크]

Python_XML2 - Find the Maximum Depth_HackerRank XML2 - Find the Maximum Depth 풀이 import xml.etree.ElementTree as etree maxdepth = 0 def depth(elem, level): global maxdepth level += 1 for child in elem: depth(child, level) maxdepth = max(level,maxdepth) return maxdepth if __name__ == '__main__': n = int(input()) xml = "" for i in range(n): xml = xml + input() + "\n" tree = etree.ElementTree(etree.fromstring(xml)) depth(tree.getroot(), -1) print(maxdepth) * 출처 XML2 - Find the Maximum Depth | Hacke

SQL 문제 45 - LeetCode 262. Trips and Users [내부링크]

SQL 문제 45 - LeetCode 262. Trips and Users Trips and Users 풀이 -- ORACLE SELECT request_at AS Day ,ROUND( SUM( CASE WHEN status!='completed' THEN 1 ELSE 0 END )/COUNT(*),2) AS "Cancellation Rate" FROM Trips t WHERE request_at BETWEEN '2013-10-01' AND '2013-10-03' AND client_id IN (SELECT users_id FROM users WHERE banned='No') AND driver_id IN (SELECT users_id FROM users WHERE banned='No') GROUP BY request_at; -- MYSQL select request_at day, round(sum(status <> 'completed')/count(*), 2) 'Cancellati

Python HackerRank 문제 63 - Re.start() & Re.end() [내부링크]

Python HackerRank 문제 63 - Re.start() & Re.end() Re.start() & Re.end() 풀이 import re s = input() k = input() pattern = re.compile(k) r = pattern.search(s) if not r: print("(-1, -1)") while r: print("({0}, {1})".format(r.start(), r.end() - 1)) r = pattern.search(s,r.start() + 1) * 출처 Re.start() & Re.end() | HackerRank Find the indices of the start and end of the substring matched by the group. www.hackerrank.com

Python HackerRank 문제 64 - Validating Roman Numerals [내부링크]

Python HackerRank 문제 64 - Validating Roman Numerals Validating Roman Numerals 풀이 regex_pattern = r"^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$" import re print(str(bool(re.match(regex_pattern, input())))) * 출처 Validating Roman Numerals | HackerRank Use regex to validate Roman numerals. www.hackerrank.com

Python HackerRank 문제 65 - Validating phone numbers [내부링크]

Python HackerRank 문제 65 - Validating phone numbers Validating phone numbers 풀이 import re pattern = re.compile(r'^([789]\d{9})$') for i in range(int(input())): s = input() m = pattern.search(s) if m: print('YES') else: print('NO') * 출처 Validating phone numbers | HackerRank Check whether the given phone number is valid or not. www.hackerrank.com

Python_Validating and Parsing Email Addresses_HackerRank [내부링크]

Python_Validating and Parsing Email Addresses_HackerRank Validating and Parsing Email Addresses 풀이 import re pattern = re.compile(r"<[a-z][a-zA-Z0-9\-\.\_]+\@[a-zA-Z]+\.[a-zA-Z]{1,3}>") for a in range(int(input())): b = input().split() c = pattern.search(b[1]) if c: print(b[0], c.string) * 출처 Validating and Parsing Email Addresses | HackerRank Print valid email addresses according to the constraints. www.hackerrank.com

Python_Hex Color Code_HackerRank [내부링크]

Python_Hex Color Code_HackerRank Hex Color Code 풀이 import re pattern = re.compile(r"[\s:](#(?:[0-9A-Fa-f]{3}){1,2})") n = int(input()) for i in range(n): s = input() m = pattern.findall(s) for i in m: print(i) * 출처 Hex Color Code | HackerRank Validate Hex color codes in CSS. www.hackerrank.com

Python_HTML Parser - Part 1_HackerRank [내부링크]

Python_HTML Parser - Part 1_HackerRank HTML Parser - Part 1 풀이 from html.parser import HTMLParser class MyHTMLParser(HTMLParser): def handle_starttag(self, tag, attrs): print ("Start :", tag) for attr in attrs: print ("-> {} > {}".format(attr[0],attr[1])) def handle_endtag(self, tag): print ("End :", tag) def handle_startendtag(self, tag, attrs): print('Empty :', tag) for attr in attrs: print ("-> {} > {}".format(attr[0],attr[1])) parser = MyHTMLParser() n = int(input()) for _ in range(n): parse

Python HackerRank 문제 58 - Detect Floating Point Number [내부링크]

Python HackerRank 문제 - Python HackerRank 문제 58 - Detect Floating Point Number Detect Floating Point Number 풀이 import re n = int(input()) for i in range(n): t = input() print (bool(re.match(r"^[-+]?[0-9]*\.[0-9]+$",t))) * 출처 Detect Floating Point Number | HackerRank Validate a floating point number using the regular expression module for Python. www.hackerrank.com

Python HackerRank 문제 59 - Map and Lambda Function [내부링크]

Python HackerRank 문제 59 - Map and Lambda Function Map and Lambda Function 풀이 cube = lambda x: pow(x,3) def fibonacci(n): l = [] for i in range(n - 1 if n > 2 else (n)): if len(l) < 2: l.append(i) if len(l) >= 2 and n > 2: z = l[-1] + l[-2] l.append(z) return l if __name__ == '__main__': n = int(input()) print(list(map(cube, fibonacci(n)))) * 출처 Map and Lambda Function | HackerRank This challenge covers the basic concept of maps and lambda expressions. www.hackerrank.com

Python HackerRank 문제 60 - Re.split() [내부링크]

Python HackerRank 문제 60 - Re.split() 풀이 regex_pattern = r"[,.]" import re print("\n".join(re.split(regex_pattern, input()))) * 출처 Re.split() | HackerRank Split the string by the pattern occurrence using the re.split() expression. www.hackerrank.com

Python HackerRank 문제 61 - Group(), Groups() & Groupdict() [내부링크]

Python HackerRank 문제 61 - Group(), Groups() & Groupdict() Group(), Groups() & Groupdict() 풀이 import re s = input() m = re.search(r"([a-z0-9A-Z])\1", s) if m: print(m.groups()[0]) else: print("-1") * 출처 Group(), Groups() & Groupdict() | HackerRank Using group(), groups(), and groupdict(), find the subgroup(s) of the match. www.hackerrank.com

Python HackerRank 문제 62 - Re.findall() & Re.finditer() [내부링크]

Python HackerRank 문제 62 - Re.findall() & Re.finditer() Re.findall() & Re.finditer() 풀이 import re s = re.findall('(?<=[^aeiouAEIOU])[aeiouAEIOU]{2,}(?=[^aeiouAEIOU])',input()) print("\n".join(s) if s else -1) * 출처 Re.findall() & Re.finditer() | HackerRank Find all the pattern matches using the expressions re.findall() and re.finditer(). www.hackerrank.com

SQL 문제 44 - LeetCode 393. UTF-8 Validation [내부링크]

SQL 문제 44 - LeetCode 393. UTF-8 Validation UTF-8 Validation 풀이 class Solution { public boolean validUtf8(int[] data) { int bytes = 0; for (int val: data) { if(bytes == 0){ if((val >> 7) == 0b0){ continue; }else if((val >> 5) == 0b110){ bytes=1; }else if((val >> 4) == 0b1110){ bytes=2; }else if((val >> 3) == 0b11110){ bytes=3; }else{ return false; } }else{ if((val >> 6) == 0b10){ bytes--; }else{ return false; } } } return bytes == 0; } } 문제가 어려운건 아닌데,, 클래스명과 메서드명을 반드시 맞춰주자.. 안그러면 'cannot find sym

Python HackerRank 문제 23 - Alphabet Rangoli [내부링크]

Python HackerRank 문제 23 - Alphabet Rangoli 풀이 import string def print_rangoli(size): str = 'abcdefghijklmnopqrstuvwxyz' for i in range(size-1,-size,-1): temp = '-'.join(str[size-1:abs(i):-1]+str[abs(i):size]) print(temp.center(4*size-3,'-')) if __name__ == '__main__': n = int(input()) print_rangoli(n) * 출처 Alphabet Rangoli | HackerRank Let's draw rangoli. www.hackerrank.com

Python HackerRank 문제 24 - Capitalize! [내부링크]

Python HackerRank 문제 24 - Capitalize! 풀이 #!/bin/python3 import math import os import random import re import sys # Complete the solve function below. def solve(s): return ' '.join(map(str.capitalize, s.split(' '))) if __name__ == '__main__': fptr = open(os.environ['OUTPUT_PATH'], 'w') s = input() result = solve(s) fptr.write(result + '\n') fptr.close() * 출처 Capitalize! | HackerRank Capitalize Each Word. www.hackerrank.com

Python HackerRank 문제 25 - itertools.product() [내부링크]

Python HackerRank 문제 25 - itertools.product() 풀이 from itertools import product a = list(map(int, input().split())) b = list(map(int, input().split())) print(*list(product(a, b))) * 출처 itertools.product() | HackerRank Find the cartesian product of 2 sets. www.hackerrank.com

Python HackerRank 문제 26 - collections.Counter() [내부링크]

Python HackerRank 문제 26 - collections.Counter() collections.Counter() 풀이 from collections import Counter stock = int(input()) sizes = input().split() cnt = Counter(sizes) orders = [input().split() for i in range(int(input()))] bill = 0 for order in orders: if order[0] in cnt.keys() and cnt[order[0]]>0: bill=bill+int(order[1]) cnt[order[0]]-=1 print(bill) * 출처 collections.Counter() | HackerRank Use a counter to sum the amount of money earned by the shoe shop owner. www.hackerrank.com

Python HackerRank 문제 27 - itertools.permutations() [내부링크]

Python HackerRank 문제 26 - itertools.permutations() itertools.permutations()풀이 from itertools import permutations word, num = input().split(" ") permutations = list(permutations(word, int(num))) permutations.sort() for i in permutations: print("".join(i)) * 출처 itertools.permutations() | HackerRank Find all permutations of a given size in a given string. www.hackerrank.com

Python HackerRank 문제 16 - Find a string [내부링크]

Python HackerRank 문제 16 - Find a string Find a string 풀이 def count_substring(string, sub_string): cnt = 0 for i in range(len(string)): if string[i:].startswith(sub_string): cnt += 1 return cnt if __name__ == '__main__': string = input().strip() sub_string = input().strip() count = count_substring(string, sub_string) print(count) * 출처 Find a string | HackerRank Find the number of occurrences of a substring in a string. www.hackerrank.com

Python HackerRank 문제 17 - String Validators [내부링크]

Python HackerRank 문제 17 - String Validators String Validators 풀이 if __name__ == '__main__': s = input() print(any([i.isalnum() for i in s])) print(any([i.isalpha() for i in s])) print(any([i.isdigit() for i in s])) print(any([i.islower() for i in s])) print(any([i.isupper() for i in s])) * 출처 String Validators | HackerRank Identify the presence of alphanumeric characters, alphabetical characters, digits, lowercase and uppercase characters in a string. www.hackerrank.com

Python HackerRank 문제 18 - Text Alignment [내부링크]

Python HackerRank 문제 18 - Text Alignment Text Alignment풀이 thickness = int(input()) #This must be an odd number c = 'H' #Top Cone for i in range(thickness): print((c*i).rjust(thickness-1)+c+(c*i).ljust(thickness-1)) #Top Pillars for i in range(thickness+1): print((c*thickness).center(thickness*2)+(c*thickness).center(thickness*6)) #Middle Belt for i in range((thickness+1)//2): print((c*thickness*5).center(thickness*6)) #Bottom Pillars for i in range(thickness+1): print((c*thickness).center(thickn

Python HackerRank 문제 19 - Designer Door Mat [내부링크]

Python HackerRank 문제 19 - Designer Door Mat Designer Door Mat 풀이 n, m = map(int,input().split()) pattern = [('.|.'*(2*i + 1)).center(m, '-') for i in range(n//2)] print('\n'.join(pattern + ['WELCOME'.center(m, '-')] + pattern[::-1])) * 출처 Designer Door Mat | HackerRank Print a designer door mat. www.hackerrank.com

Python HackerRank 문제 20 - String Split and Join [내부링크]

Python HackerRank 문제 20 - String Split and Join String Split and Join 풀이 def split_and_join(line): # write your code here return '-'.join(line.split(' ')) if __name__ == '__main__': line = input() result = split_and_join(line) print(result) * 출처 String Split and Join | HackerRank Use Python's split and join methods on the input string. www.hackerrank.com

Python HackerRank 문제 21 - Text Wrap [내부링크]

Python HackerRank 문제 21 - Text Wrap 풀이 import textwrap def wrap(string, max_width): return "\n".join(textwrap.wrap(string, max_width)) if __name__ == '__main__': string, max_width = input(), int(input()) result = wrap(string, max_width) print(result) * 출처 Text Wrap | HackerRank Wrap the given text in a fixed width. www.hackerrank.com

Python HackerRank 문제 22 - String Formatting [내부링크]

Python HackerRank 문제 22 - String Formatting String Formatting 풀이 def print_formatted(number): w = len(bin(number))-2 for i in range(1, number+1): print('{0:{width}d} {0:{width}o} {0:{width}X} {0:{width}b}'.format(i, width=w)) if __name__ == '__main__': n = int(input()) print_formatted(n) * 출처 String Formatting | HackerRank Print the formatted decimal, octal, hexadecimal, and binary values for $n$ integers. www.hackerrank.com

Python HackerRank 문제 8 - Find the Runner-Up Score! [내부링크]

Python HackerRank 문제 8 - Find the Runner-Up Score! Find the Runner-Up Score! 풀이 if __name__ == '__main__': n = int(input()) arr = map(int, input().split()) print (sorted(set(arr))[-2]) * 출처 Find the Runner-Up Score! | HackerRank For a given list of numbers, find the second largest number. www.hackerrank.com

Python HackerRank 문제 9 - Nested Lists [내부링크]

Python HackerRank 문제 9 - Nested Lists Nested Lists 풀이 if __name__ == '__main__': students = [] for _ in range(int(input())): name = input() score = float(input()) students.append([name,score]) second_high = sorted(set([i[1] for i in students]))[1] print("\n".join(sorted([i[0] for i in students if i[1] == second_high]))) * 출처 Nested Lists | HackerRank In a classroom of N students, find the student with the second lowest grade. www.hackerrank.com

Python HackerRank 문제 10 - Lists [내부링크]

Python HackerRank 문제 10 - Lists Lists 풀이 if __name__ == '__main__': N = int(input()) li = list() for _ in range(N): command = input().split() try: getattr(li, command[0])(*(map(int, command[1:]))) except AttributeError: exec('{}({})'.format(command[0], 'li')) * 출처 Lists | HackerRank Perform different list operations. www.hackerrank.com Discussion on Lists Challenge Perform different list operations. www.hackerrank.com

Python HackerRank 문제 11 - Finding the percentage [내부링크]

Python HackerRank 문제 11 - Finding the percentage Finding the percentage 풀이 if __name__ == '__main__': n = int(input()) student_marks = {} for _ in range(n): name, *line = input().split() scores = list(map(float, line)) student_marks[name] = scores query_name = input() query_scores = student_marks[query_name] print("{0:.2f}".format(sum(query_scores)/(len(query_scores)))) * 출처 Finding the percentage | HackerRank Store a list of students and marks in a dictionary, and find the average marks obtaine

두툼바삭가츠 상계점 - 통치즈 겹겹이 돈가츠, 가라아게 꼬치 [내부링크]

메뉴명 : 통치즈 겹겹이 돈가츠, 가라아게 꼬치

Python HackerRank 문제 12 - sWAP cASE [내부링크]

Python HackerRank 문제 12 - sWAP cASE sWAP cASE 풀이 def swap_case(s): result = [x.lower() if x.isupper() else x.upper() for x in s] return ''.join(result) if __name__ == '__main__': s = input() result = swap_case(s) print(result) * 출처 sWAP cASE | HackerRank Swap the letter cases of a given string. www.hackerrank.com

Python HackerRank 문제 13 - Tuples [내부링크]

Python HackerRank 문제 13 - Tuples Tuples 풀이 if __name__ == '__main__': n = int(raw_input()) integer_list = map(int, raw_input().split()) print(hash(tuple(integer_list))) * 출처 Tuples | HackerRank Learn about tuples and compute hash(T). www.hackerrank.com

Python HackerRank 문제 14 - What's Your Name? [내부링크]

Python HackerRank 문제 14 - What's Your Name? What's Your Name? 풀이 def print_full_name(first, last): print("Hello {} {}! You just delved into python.".format(first,last)) if __name__ == '__main__': first_name = input() last_name = input() print_full_name(first_name, last_name) * 출처 What's Your Name? | HackerRank Python string practice: Print your name in the console. www.hackerrank.com

Python HackerRank 문제 15 - Mutations [내부링크]

Python HackerRank 문제 15 - Mutations Mutations 풀이 def mutate_string(string, position, character): str = list(string) str[position] = character return ''.join(str) if __name__ == '__main__': s = input() i, c = input().split() s_new = mutate_string(s, int(i), c) print(s_new) * 출처 Mutations | HackerRank Understand immutable vs mutable by making changes to a given string. www.hackerrank.com

JAVA 문제 76 - 아무래도이문제는A번난이도인것같다 BAEKJOON 1402 [내부링크]

JAVA 문제 76 - 아무래도이문제는A번난이도인것같다 BAEKJOON 1402 아무래도이문제는A번난이도인것같다 풀이 import java.io.*; import java.util.*; public class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cnt = Integer.parseInt(br.readLine()); for(int i = 0; i < cnt; i++){ StringTokenizer st = new StringTokenizer(br.readLine()); System.out.println("yes"); } } } 문제의 주어진 점은 테스트 케이스, 테스트 케이스의 숫자 2개이다. 앞 숫자는 전체 곱한 값, 뒤 숫자는 전체 더한 값으로 주

JAVA 문제 77 - 24 BAEKJOON 1408 [내부링크]

JAVA 문제 77 - 24 BAEKJOON 1408 24 풀이 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = 0; int num2 = 0; StringTokenizer st = new StringTokenizer(br.readLine(), ":"); int h = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); int s = Integer.parseInt(st.nextToken()); num = (h * 3600) + (m * 60) + s; st = new StringTokenizer

Python HackerRank 문제 1 - Say "Hello, World!" With Python [내부링크]

Python 문제 1 - Say "Hello, World!" With Python(HackerRank) Say "Hello, World!" With Python 풀이 if __name__ == '__main__': my_string = "Hello, World!"; print my_string print와 변수를 사용할 줄 아는지 확인하는 문제로, "Hello, World!"를 my_string에 담아서 출력하면 끝 * 출처 Say "Hello, World!" With Python | HackerRank Get started with Python by printing to stdout. www.hackerrank.com

Python HackerRank 문제 2 - Python If-Else [내부링크]

Python HackerRank 문제 2 - Python If-Else Python If-Else 풀이 #!/bin/python3 import math import os import random import re import sys if __name__ == '__main__': n = int(input()) if n % 2 != 0: print("Weird") elif n in range(2, 6): print("Not Weird") elif n in range(6, 21): print("Weird") elif n >= 20: print("Not Weird") * 출처 Python If-Else | HackerRank Practice using if-else conditional statements www.hackerrank.com

Python HackerRank 문제 3 - Arithmetic Operators [내부링크]

Python HackerRank 문제 3 - Arithmetic Operators Arithmetic Operators 풀이 if __name__ == '__main__': a = int(input()) b = int(input()) print('{0} \n{1} \n{2}'.format((a + b), (a - b), (a * b))) * 출처 Arithmetic Operators | HackerRank Addition, subtraction and multiplication. www.hackerrank.com

Python HackerRank 문제 4 - Python: Division [내부링크]

Python HackerRank 문제 4 - Python: Division Python: Division 풀이 if __name__ == '__main__': a = int(input()) b = int(input()) print(a//b) print(a/b) * 출처 Python: Division | HackerRank Division using __future__ module. www.hackerrank.com

Python HackerRank 문제 5 - Loops [내부링크]

Python HackerRank 문제 5 - Loops Loops 풀이 if __name__ == '__main__': n = int(input()) for i in range(0,n): print(i*i) * 출처 Loops | HackerRank Practice using "for" and "while" loops in Python. www.hackerrank.com

Python HackerRank 문제 6 - Print Function [내부링크]

Python HackerRank 문제 6 - Print Function Print Function 풀이 if __name__ == '__main__': n = int(input()) for i in range(1,n+1): print(i,end='') * 출처 Print Function | HackerRank Learn to use print as a function www.hackerrank.com

Python HackerRank 문제 7 - List Comprehensions [내부링크]

Python HackerRank 문제 7 - List Comprehensions List Comprehensions 풀이 if __name__ == '__main__': x = int(input()) y = int(input()) z = int(input()) n = int(input()) print(list([i,j,k] for i in range(x+1) for j in range(y+1) for k in range(z+1) if i+j+k !=n)) * 출처 List Comprehensions | HackerRank You will learn about list comprehensions. www.hackerrank.com

SQL 문제 39 - Nth Highest Salary LeetCode 177 [내부링크]

SQL 문제 39 - Nth Highest Salary LeetCode 177 Nth Highest Salary 풀이 -- oracle CREATE FUNCTION getNthHighestSalary(num IN NUMBER) RETURN NUMBER IS sal NUMBER; BEGIN SELECT SALARY INTO sal FROM (SELECT SALARY, DENSE_RANK() OVER (ORDER BY SALARY DESC) AS RANK FROM EMPLOYEE) WHERE RANK = num AND ROWNUM = 1; RETURN sal; END; -- MYSQL CREATE FUNCTION getNthHighestSalary(num INT) RETURNS INT BEGIN RETURN ( SELECT DISTINCT SALARY FROM ( SELECT SALARY , DENSE_RANK() OVER (ORDER BY SALARY DESC) AS D_RANK FR

SQL 문제 40 - Consecutive Numbers LeetCode 180 [내부링크]

SQL 문제 40 - Consecutive Numbers LeetCode 180 Consecutive Numbers 풀이 SELECT DISTINCT T.NUM AS ConsecutiveNums FROM ( SELECT LAG(NUM) OVER(ORDER BY ID ASC) AS P_NUM , NUM , LEAD(NUM) OVER(ORDER BY ID ASC) AS N_NUM FROM LOGS ) T WHERE T.NUM = T.P_NUM AND T.NUM = T.N_NUM; 특정 값 기준, LAG와 LEAD를 통해 이전 / 이후 값을 찾는 풀이다. * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 41 - Department Highest Salary LeetCode 184 [내부링크]

SQL 문제 41 - Department Highest Salary LeetCode 184 Department Highest Salary 풀이 -- ORACLE SELECT T.Department, T.EMPLOYEE, T.SALARY FROM ( SELECT D.NAME AS Department , E.NAME AS EMPLOYEE , E.SALARY AS SALARY , RANK() OVER(PARTITION BY D.ID ORDER BY E.SALARY DESC) RANK FROM EMPLOYEE E INNER JOIN DEPARTMENT D ON E.DEPARTMENTID = D.ID ) T WHERE T.RANK = 1; -- MYSQL, MSSQL SELECT T.Department, T.EMPLOYEE, T.SALARY FROM ( SELECT D.NAME AS Department , E.NAME AS EMPLOYEE , E.SALARY AS SALARY , RANK()

SQL 문제 42 - Exchange Seats LeetCode 626 [내부링크]

SQL 문제 42 - Exchange Seats LeetCode 626 Exchange Seats 풀이 -- ORACLE SELECT ID , NVL( CASE WHEN MOD(ID, 2) = 1 THEN LEAD(STUDENT,1) OVER(ORDER BY ID) ELSE LAG(STUDENT,1) OVER(ORDER BY ID) END, STUDENT ) STUDENT FROM SEAT; -- MYSQL SELECT ID , IFNULL( CASE WHEN MOD(ID, 2) = 1 THEN LEAD(STUDENT,1) OVER(ORDER BY ID) ELSE LAG(STUDENT,1) OVER(ORDER BY ID) END, STUDENT ) STUDENT FROM SEAT; -- MSSQL SELECT ID , ISNULL( CASE WHEN ID % 2 = 1 THEN LEAD(STUDENT,1) OVER(ORDER BY ID) ELSE LAG(STUDENT,1) OVER(

SQL 문제 43 - Department Top Three Salaries LeetCode 185 [내부링크]

SQL 문제 43 - Department Top Three Salaries LeetCode 185 Department Top Three Salaries 풀이 -- ORACLE, MSSQL SELECT DEPARTMENT , EMPLOYEE , SALARY FROM ( SELECT D.NAME AS DEPARTMENT , E.NAME AS EMPLOYEE , E.SALARY AS SALARY , DENSE_RANK() OVER (PARTITION BY DEPARTMENTID ORDER BY SALARY DESC) AS RANK FROM EMPLOYEE E INNER JOIN DEPARTMENT D ON E.DEPARTMENTID = D.ID ) T WHERE T.RANK < 4 ORDER BY DEPARTMENT, SALARY DESC -- MYSQL SELECT DEPARTMENT , EMPLOYEE , SALARY FROM ( SELECT D.NAME AS DEPARTMENT ,

지코바치킨 노원상계2호점 - 순살양념(매운맛) [내부링크]

메뉴명 : 지코바 치킨 순살 양념(매운맛)

JAVA 문제 74 - 약수 BAEKJOON 1037 [내부링크]

JAVA 문제 74 - 약수 BAEKJOON 1037 약수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int[] numArr = new int[num]; StringTokenizer st = new StringTokenizer(br.readLine()); for(int i = 0; i < num; i++){

JAVA 문제 75 - 쉽게 푸는 문제 BAEKJOON 1292 [내부링크]

JAVA 문제 75 - 쉽게 푸는 문제 BAEKJOON 1292 쉽게 푸는 문제 풀이 import java.io.*; import java.util.*; public class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayList<Integer> list = new ArrayList<Integer>(); StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); int sum=0; for(int i = 0; i < 1000; i++) { for(int j = 0;

SQL 문제 32 - Actors and Directors Who Cooperated At Least Three Times LeetCode 1050 [내부링크]

SQL 문제 32 - Actors and Directors Who Cooperated At Least Three Times LeetCode 1050 Actors and Directors Who Cooperated At Least Three Times 풀이 SELECT ACTOR_ID , DIRECTOR_ID FROM ACTORDIRECTOR GROUP BY ACTOR_ID, DIRECTOR_ID HAVING COUNT(TIMESTAMP) >= 3 * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 33 - Classes More Than 5 Students LeetCode 596 [내부링크]

SQL 문제 33 - Classes More Than 5 Students LeetCode 596 Classes More Than 5 Students 풀이 SELECT CLASS FROM COURSES GROUP BY CLASS HAVING COUNT(STUDENT) >= 5 * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 34 - Not Boring Movies LeetCode 620 [내부링크]

SQL 문제 34 - Not Boring Movies LeetCode 620 Not Boring Movies 풀이 -- ORACLE, MYSQL SELECT ID , MOVIE , DESCRIPTION , RATING FROM CINEMA WHERE MOD(ID,2) = 1 AND DESCRIPTION != 'boring' ORDER BY RATING DESC; -- MSSQL SELECT ID , MOVIE , DESCRIPTION , RATING FROM CINEMA WHERE ID % 2 = 1 AND DESCRIPTION != 'boring' ORDER BY RATING DESC; - MSSQL에서 나머지를 구하는데 MOD함수가 먹히지 않고 '%' 연산자를 통해 나머지를 구한다. * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and ge

SQL 문제 35 - Sales Analysis III LeetCode 1084 [내부링크]

SQL 문제 35 - Sales Analysis III LeetCode 1084 Sales Analysis III 풀이 - ORACLE, MSSQL SELECT S.PRODUCT_ID, P.PRODUCT_NAME FROM SALES S INNER JOIN PRODUCT P ON S.PRODUCT_ID = P.PRODUCT_ID GROUP BY S.PRODUCT_ID, P.PRODUCT_NAME HAVING MIN(S.SALE_DATE)>= '2019-01-01' AND MAX(S.SALE_DATE) <= '2019-03-31' - MYSQL SELECT S.PRODUCT_ID , P.PRODUCT_NAME FROM SALES S LEFT OUTER JOIN PRODUCT P ON S.PRODUCT_ID = P.PRODUCT_ID GROUP BY S.PRODUCT_ID HAVING SUM(S.SALE_DATE BETWEEN '2019-01-01' AND '2019-03-31') = C

SQL 문제 36 - Reformat Department Table LeetCode 1179 [내부링크]

SQL 문제 36 - Reformat Department Table LeetCode 1179 Reformat Department Table 풀이 - ORACLE SELECT * FROM DEPARTMENT PIVOT( SUM(REVENUE) FOR MONTH IN ( 'Jan' JAN_REVENUE, 'Feb' FEB_REVENUE, 'Mar' MAR_REVENUE, 'Apr' APR_REVENUE, 'May' MAY_REVENUE, 'Jun' JUN_REVENUE, 'Jul' JUL_REVENUE, 'Aug' AUG_REVENUE, 'Sep' SEP_REVENUE, 'Oct' OCT_REVENUE, 'Nov' NOV_REVENUE, 'Dec' DEC_REVENUE ) ); - MYSQL SELECT ID , SUM(IF(MONTH = 'Jan', REVENUE, NULL)) AS JAN_REVENUE , SUM(IF(MONTH = 'Feb', REVENUE, NULL)) AS FE

SQL 문제 37 - Bank Account Summary II LeetCode 1587 [내부링크]

SQL 문제 37 - Bank Account Summary II LeetCode 1587 Bank Account Summary II 풀이 SELECT U.NAME , SUM(T.AMOUNT) AS BALANCE FROM USERS U LEFT OUTER JOIN TRANSACTIONS T ON U.ACCOUNT = T.ACCOUNT GROUP BY U.NAME HAVING SUM(T.AMOUNT) > 10000; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 38 - Rank Scores LeetCode 178 [내부링크]

SQL 문제 38 - Rank Scores LeetCode 178 Rank Scores 풀이 - ORACLE, MSSQL SELECT SCORE , DENSE_RANK() OVER(ORDER BY SCORE DESC) AS RANK FROM SCORES; - MYSQL, MSSQL SELECT SCORE , DENSE_RANK() OVER(ORDER BY SCORE DESC) AS 'RANK' FROM SCORES; - 중복 점수는 같은 순위로 정한다음 중복 개수만큼 순위가 밀려나는 게 아니라 다음 순위로 정하는 방법인 DENSE_RANK함수를 사용했다. - MSSQL에선 별칭을 적을 때 ''와 상관없이 둘다 됬지만, ORACLE은 없고 MYSQL은 존재해야 실행됨을 확인하였다. * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get pr

SQL 문제 30 - Top Travellers LeetCode 1407 [내부링크]

SQL 문제 30 - Top Travellers LeetCode 1407 Top Travellers 풀이 -- ORACLE SELECT NAME , NVL(SUM(R.DISTANCE),0) AS TRAVELLED_DISTANCE FROM USERS U LEFT OUTER JOIN RIDES R ON U.ID = R.USER_ID GROUP BY NAME, U.ID ORDER BY TRAVELLED_DISTANCE DESC, U.NAME ASC; -- MYSQL SELECT NAME , IFNULL(SUM(R.DISTANCE),0) AS TRAVELLED_DISTANCE FROM USERS U LEFT OUTER JOIN RIDES R ON U.ID = R.USER_ID GROUP BY NAME, U.ID ORDER BY TRAVELLED_DISTANCE DESC, U.NAME ASC; -- MSSQL SELECT NAME , ISNULL(SUM(R.DISTANCE),0) AS TRA

SQL 문제 31 - Market Analysis I LeetCode 1158 [내부링크]

SQL 문제 31 - Market Analysis I LeetCode 1158 Market Analysis I 풀이 -- ORACLE SELECT U.USER_ID AS BUYER_ID , TO_CHAR(U.JOIN_DATE,'YYYY-MM-DD') AS JOIN_DATE , NVL(COUNT(O.ORDER_ID),0) AS ORDERS_IN_2019 FROM ORDERS O RIGHT OUTER JOIN USERS U ON O.BUYER_ID = U.USER_ID AND TO_CHAR(ORDER_DATE,'YYYY') = '2019' GROUP BY U.USER_ID, U.JOIN_DATE ORDER BY U.USER_ID; -- MYSQL SELECT U.USER_ID AS BUYER_ID , U.JOIN_DATE AS JOIN_DATE , IFNULL(COUNT(O.ORDER_ID),0) AS ORDERS_IN_2019 FROM ORDERS O RIGHT OUTER JOIN U

SQL 문제 27 - The Latest Login in 2020 LeetCode 1890 [내부링크]

SQL 문제 27 - The Latest Login in 2020 LeetCode 1890 The Latest Login in 2020 풀이 SELECT USER_ID , MAX(TIME_STAMP) AS LAST_STAMP FROM LOGINS WHERE TIME_STAMP LIKE '%2020%' GROUP BY USER_ID * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 28 - Find Total Time Spent by Each Employee LeetCode 1741 [내부링크]

SQL 문제 28 - Find Total Time Spent by Each Employee LeetCode 1741 Find Total Time Spent by Each Employee 풀이 -- ORACLE SELECT TO_CHAR(EVENT_DAY,'YYYY-MM-DD') AS DAY , EMP_ID , SUM(OUT_TIME) - SUM(IN_TIME) AS TOTAL_TIME FROM EMPLOYEES GROUP BY EVENT_DAY, EMP_ID ORDER BY EVENT_DAY ASC; -- MYSQL, MSSQL SELECT EVENT_DAY AS DAY , EMP_ID , SUM(OUT_TIME) - SUM(IN_TIME) AS TOTAL_TIME FROM EMPLOYEES GROUP BY EVENT_DAY, EMP_ID ORDER BY EVENT_DAY ASC; * 출처 Level up your coding skills and quickly land a job.

SQL 문제 29 - Capital Gain/Loss LeetCode 1393 [내부링크]

SQL 문제 29 - Capital Gain/Loss LeetCode 1393 Capital Gain/Loss 풀이 SELECT STOCK_NAME , SUM( CASE WHEN OPERATION = 'Buy' THEN -PRICE WHEN OPERATION = 'Sell' THEN PRICE ELSE 0 END ) AS CAPITAL_GAIN_LOSS FROM STOCKS GROUP BY STOCK_NAME; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 7 - Duplicate Emails LeetCode 182 [내부링크]

SQL 문제 7 - Duplicate Emails LeetCode 182 Duplicate Emails 풀이 SELECT EMAIL FROM PERSON GROUP BY EMAIL HAVING COUNT(EMAIL) > 1; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 10 - Delete Duplicate Emails LeetCode 196 [내부링크]

SQL 문제 10 - Delete Duplicate Emails LeetCode 196 Delete Duplicate Emails 풀이 -- ORACLE, MSSQL DELETE FROM PERSON WHERE ID NOT IN (SELECT MIN(ID) FROM PERSON GROUP BY EMAIL ); -- MYSQL DELETE P FROM PERSON P, PERSON P2 WHERE P.Email = P2.Email AND P.Id > P2.Id mysql에선 delete 시 하위 쿼리의 동일 테이블에서 선택할 수 없기 떄문에 셀프조인을 이용하여 삭제한다. * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 13.2.2 DELETE Stat

SQL 문제 8 - Calculate Special Bonus LeetCode 1873 [내부링크]

SQL 문제 8 - Calculate Special Bonus LeetCode 1873 Calculate Special Bonus 풀이 -- ORACLE SELECT EMPLOYEE_ID , CASE WHEN MOD(EMPLOYEE_ID,2) = 0 OR SUBSTR(NAME,0,1) = 'M' THEN 0 ELSE SALARY END AS BONUS FROM EMPLOYEES; -- MYSQL SELECT EMPLOYEE_ID , CASE WHEN EMPLOYEE_ID % 2 = 0 OR LEFT(NAME,1) = 'M' THEN 0 ELSE SALARY END AS BONUS FROM EMPLOYEES; -- MSSQL SELECT EMPLOYEE_ID , CASE WHEN EMPLOYEE_ID % 2 = 0 OR LEFT(NAME,1) = 'M' THEN 0 ELSE SALARY END AS BONUS FROM EMPLOYEES; * 출처 Level up your coding

SQL 문제 9 - Swap Salary LeetCode 627 [내부링크]

SQL 문제 9 - Swap Salary LeetCode 627 Swap Salary 풀이 UPDATE SALARY SET SEX = CASE WHEN SEX = 'f' THEN 'm' ELSE 'f' END; SELECT 말고 오로지 UPDATE만 해야하는 문제다. * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 11 - Fix Names in a Table LeetCode 1667 [내부링크]

SQL 문제 11 - Fix Names in a Table LeetCode 1667 Fix Names in a Table 풀이 -- ORACLE SELECT USER_ID , INITCAP(NAME) AS NAME FROM USERS ORDER BY USER_ID; -- MYSQL SELECT USER_ID , CONCAT(UPPER(LEFT(NAME,1)), LOWER(SUBSTRING(NAME,2))) AS NAME FROM USERS ORDER BY USER_ID; -- MSSQL SELECT USER_ID , UPPER(LEFT(NAME,1)) + LOWER(SUBSTRING(NAME,2,LEN(NAME))) AS NAME FROM USERS ORDER BY USER_ID; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get p

SQL 문제 12 - Group Sold Products By The Date LeetCode 1484 [내부링크]

SQL 문제 12 - Group Sold Products By The Date LeetCode 1484 Group Sold Products By The Date 풀이 -- ORACLE SELECT TO_CHAR(A.SELL_DATE,'YYYY-MM-DD') SELL_DATE , COUNT(DISTINCT A.PRODUCT) NUM_SOLD , LISTAGG(A.PRODUCT,',') WITHIN GROUP(ORDER BY A.PRODUCT) PRODUCTS FROM (SELECT DISTINCT SELL_DATE,PRODUCT FROM ACTIVITIES) A GROUP BY A.SELL_DATE; -- MYSQL SELECT DATE_FORMAT(A.SELL_DATE,'%Y-%m-%d') SELL_DATE , COUNT(DISTINCT A.PRODUCT) NUM_SOLD , GROUP_CONCAT(DISTINCT A.PRODUCT ) PRODUCTS FROM ACTIVITIES A

SQL 문제 13 - Patients With a Condition LeetCode 1527 [내부링크]

SQL 문제 13 - Patients With a Condition LeetCode 1527 Patients With a Condition 풀이 -- ORACLE, MYSQL SELECT PATIENT_ID , PATIENT_NAME , CONDITIONS FROM PATIENTS WHERE REGEXP_LIKE(CONDITIONS,'^DIAB1|^* DIAB1'); -- MSSQL SELECT PATIENT_ID , PATIENT_NAME , CONDITIONS FROM PATIENTS WHERE CONDITIONS LIKE 'DIAB1%' OR CONDITIONS LIKE '% DIAB1%'; - 오라클과 MYSQL에선 REGEXP_LIKE를 이용하여 풀었으나,, - MSSQL에선 지원하지 않아서 LIKE 문으로 따로 작성하였다. * 출처 Level up your coding skills and quickly land a job. This is the best place to e

JAVA 문제 71 - 음양 더하기 프로그래머스 [내부링크]

JAVA 문제 71 - 음양 더하기 프로그래머스 음양 더하기 풀이 import java.util.stream.IntStream; class Solution { public int solution(int[] absolutes, boolean[] signs) { return IntStream.range(0, absolutes.length).map(i -> absolutes[i] * (signs[i] != false ? 1 : -1)).sum(); } } * 출처 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 제한사항 absolutes의 길이는 1 이상 1,000 이하입니다. absolutes의 모든 수는 각각 1 이상 1,000 이하입니다. sig

JAVA 문제 72 - 내적 프로그래머스 [내부링크]

JAVA 문제 72 - 내적 프로그래머스 내적 풀이 import java.util.stream.IntStream; class Solution { public int solution(int[] a, int[] b) { return IntStream.range(0, a.length).map(x -> a[x] * b[x]).sum(); } } * 출처 코딩테스트 연습 - 내적 문제 설명 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적 을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) 제한사항 a, b의 길이는 1 이상 1,000 이하입니다. a, b의 모든 수는 -1,000 이상 1,000 이하입니다. 입출력 예 a b result [1,2,3,4] [-3,-1,0,2] 3 [-1,0,1] [1,0,-1]

JAVA 문제 73 - 소수 만들기 프로그래머스 [내부링크]

JAVA 문제 73 - 소수 만들기 프로그래머스 소수 만들기 풀이 class Solution { public int solution(int[] nums) { int answer = 0; for(int i=0; i<nums.length-2; i++) { for(int j=i+1; j < nums.length-1; j++) { for(int k=j+1; k < nums.length; k++) { int sum = nums[i] + nums[j] + nums[k]; boolean isPrime = true; for (int l=2; l*l <= sum; l++) { if (sum % l == 0) { isPrime = false; break; } } if(isPrime) answer++; } } } return answer; } } * 출처 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가

SQL 문제 1 - Big Countries LeetCode 595 [내부링크]

SQL 문제 1 - Big Countries LeetCode 595 Big Countries 풀이 SELECT NAME , POPULATION , AREA FROM WORLD WHERE POPULATION >= 25000000 OR AREA >= 3000000; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 2 - Recyclable and Low Fat Products LeetCode 1757 [내부링크]

SQL 문제 2 - Recyclable and Low Fat Products LeetCode 1757 Recyclable and Low Fat Products 풀이 SELECT PRODUCT_ID FROM PRODUCTS WHERE LOW_FATS = 'Y' AND RECYCLABLE = 'Y'; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 3 - Find Customer Referee LeetCode 584 [내부링크]

SQL 문제 3 - Find Customer Referee LeetCode 584 Find Customer Referee 풀이 SELECT NAME FROM CUSTOMER WHERE REFEREE_ID != 2 OR REFEREE_ID IS NULL; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 4 - Customers Who Never Order LeetCode 595 [내부링크]

SQL 문제 4 - Customers Who Never Order LeetCode 595 Customers Who Never Order 풀이 SELECT C.NAME AS CUSTOMERS FROM CUSTOMERS C LEFT OUTER JOIN ORDERS O ON C.ID = O.CUSTOMERID WHERE O.CUSTOMERID IS NULL ORDER BY C.NAME ASC; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 5 - Combine Two Tables LeetCode 175 [내부링크]

SQL 문제 5 - Combine Two Tables LeetCode 175 Combine Two Tables 풀이 SELECT P.FIRSTNAME , P.LASTNAME , A.CITY , A.STATE FROM PERSON P LEFT OUTER JOIN ADDRESS A ON P.PERSONID = A.PERSONID; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

SQL 문제 6 - Employees Earning More Than Their Managers LeetCode 181 [내부링크]

SQL 문제 6 - Employees Earning More Than Their Managers LeetCode 181 Employees Earning More Than Their Managers 풀이 SELECT E.NAME AS EMPLOYEE FROM EMPLOYEE E LEFT OUTER JOIN EMPLOYEE E2 ON E.MANAGERID = E2.ID WHERE E.SALARY > E2.SALARY; * 출처 Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com

JAVA 문제 64 - 진짜 공간 BAEKJOON 1350 [내부링크]

JAVA 문제 64 - 진짜 공간 BAEKJOON 1350 진짜 공간 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); long cnt = 0; StringTokenizer st = new StringTokenizer(br.readLine()); long size = Long.parseLong(br.readLine()); for(int i = 0; i < N; i++) {

JAVA 문제 65 - 유진수 BAEKJOON 1356 [내부링크]

JAVA 문제 65 - 유진수 BAEKJOON 1356 유진수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int i,j; String str = br.readLine(); boolean chk = false; for(i=0;i<str.length()-1;i++) { int a = 1, b =1; for(j = 0;j <= i;j++){ a *= str.charAt(j)-'0'; } for(j = i+1; j < str.length();j++){ b *= str.charAt(j)-'0';

JAVA 문제 66 - 뒤집힌 덧셈 BAEKJOON 1357 [내부링크]

JAVA 문제 66 - 뒤집힌 덧셈 BAEKJOON 1357 뒤집힌 덧셈 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); System.out.println(Integer.parseInt(new StringBuffer( String.valueOf( Integer.parseInt( new StringBuffer(st.nextToken(

JAVA 문제 67 - 펫 BAEKJOON 1362 [내부링크]

JAVA 문제 67 - 펫 BAEKJOON 1362 펫 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.stream.Stream; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int idx = 0; while(true){ int[] num = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); if(num[0] == 0 && num[1] == 0){ break; } boolean chk = false; while(true){ Strin

JAVA 문제 68 - 가장 많은 글자 BAEKJOON 1371 [내부링크]

JAVA 문제 68 - 가장 많은 글자 BAEKJOON 1371 가장 많은 글자 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; int cnt[] = new int[26]; while((str = br.readLine()) != null){ for(int i=0; i<str.length(); i++){ if(str.charAt(i) >= 'a' && str.charAt(i) <= 'z'){ cnt[str.charAt(i) - 'a']++; } } } int max = 0; for(

JAVA 문제 69 - 2진수 8진수 BAEKJOON 1373 [내부링크]

JAVA 문제 69 - 2진수 8진수 BAEKJOON 1373 2진수 8진수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int n = str.length(); if (n%3 == 1) { System.out.print(str.charAt(0)); } else if (n%3 == 2) { System.out.print((str.charAt(0)-'0')*2 + (str.charAt(1)-'0')); } for (int i=n%3; i<n;

SQL 문제 28 - 헤비 유저가 소유한 장소 (프로그래머스) [내부링크]

SQL 문제 28 - 헤비 유저가 소유한 장소 (프로그래머스) 헤비 유저가 선택한 장소 풀이 SELECT ID , NAME , HOST_ID FROM PLACES WHERE HOST_ID IN ( SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(HOST_ID) > 1 ) ORDER BY ID; * 출처 코딩테스트 연습 - 헤비 유저가 소유한 장소 PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID , NAME , HOST_ID 는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를 나타냅니다. ID 는 기본키입니다. NAME TYPE ID INT NAME VARCHAR HOST_ID INT 문제 이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세

SQL 문제 29 - 우유와 요거트가 담긴 장바구니(프로그래머스) [내부링크]

SQL 문제 29 - 우유와 요거트가 담긴 장바구니(프로그래머스) 우유와 요거트가 담긴 장바구니 풀이 SELECT DISTINCT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Milk' AND CART_ID IN ( SELECT CART_ID FROM CART_PRODUCTS WHERE NAME = 'Yogurt' ) ORDER BY CART_ID; * 출처 코딩테스트 연습 - 우유와 요거트가 담긴 장바구니 NAME TYPE ID INT CART_ID INT NAME VARCHAR PRICE INT 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다. 예시 예를 들어 CART_PRODUCTS 테이블이 다음과 같다면 CART_PRODUCTS 테이블 ID CART

JAVA 문제 70 - 없는 숫자 더하기 프로그래머스 [내부링크]

JAVA 문제 70 - 없는 숫자 더하기 프로그래머스 없는 숫자 더하기 풀이 import java.util.stream.IntStream; import java.util.Arrays; class Solution { public int solution(int[] numbers) { return IntStream.range(0, 10).filter(i -> Arrays.stream(numbers).noneMatch(num -> i == num)).sum(); } } * 출처 코딩테스트 연습 - 없는 숫자 더하기 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers 가 매개변수로 주어집니다. numbers 에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ numbers 의 길이 ≤ 9 0 ≤ numbers 의 모든 원소 ≤ 9 numbers 의 모든 원소는 서로 다릅니다. 입출력 예 num

JAVA 문제 58 - 집 주소 BAEKJOON 1284 [내부링크]

JAVA 문제 58 - 집 주소 BAEKJOON 1284 집 주소 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ String str = br.readLine(); if(str.equals("0")){ break; } char[] cha = str.toCharArray(); int num = 1; for(int i=0; i<cha.length; i++){ if(cha[i] == '1'){ num += 3; }else{ num += cha[i] == '0' ? 5 : 4; } }

SQL(MySQL/MariaDB) - EXECUTE Statement [내부링크]

SQL(MySQL/MariaDB) - EXECUTE Statement PREPARE Statement에 이어 EXECUTE Statement를 다룬 글이다. EXECUTE Statement -- EXECUTE문 작성법 EXECUTE 쿼리문 이름 [USING @매개변수명1 [, 매개변수명2] ...] -- prepare문 PREPARE s1 from 'select SQRT(POW(?,2) + POW(?,2)) AS tot'; SET @num1 = 3; SET @num2 = 4; -- EXECUTE문 EXECUTE s1 USING @num1, @num2; -- EXECUTE문 결과 tot 5 - EXECUET문은 prepare 명령문을 실행하는 데 prepare에 매개변수 표시문자가 포함된 경우, USING 변수에 매개변수에 맞춰 값을 설정해줘야 한다. - 만약 매개변수 표시문자가 없다면 'EXECUTE 쿼리문' 으로도 사용 가능하다. - PREPARE문을 작성한 다음, 해당 쿼리문 안

SQL(MySQL/MariaDB) - DEALLOCATE PREPARE 문 [내부링크]

SQL(MySQL/MariaDB) - DEALLOCATE PREPARE 문 이전 prepare / execute statement으로 생성되고 실행된 명령문 할당을 해제하는 방법이다. DEALLOCATE PREPARE -- 작성방법 {DEALLOCATE | DROP} PREPARE {prepare statement명} - PREPARE, EXECUTE 이후 DEALLOCATE PREPARE문을 이용하여 할당 해제를 하기 위해 사용한다. - 현재 세션에서 너무 많이 준비된 명령문이 있을 경우 MAX_PREPARED_STMT_COUNT 시스템 변수에 의해 상한이 발생할 수 있다. * 출처 13.5.3 DEALLOCATE PREPARE Statement { DEALLOCATE | DROP } PREPARE stmt_name To deallocate a prepared statement produced with PREPARE , use a DEALLOCATE PREPARE statement

JAVA 문제 59 - 팀 이름 정하기 BAEKJOON 1296 [내부링크]

팀 이름 정하기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String name = br.readLine(); int[] arr = new int[4]; int max = -1; String str = "LOVE"; String str2 = ""; int N = Integer.parseInt(br.readLine()); for(int i = 0; i < N; i++) { String team = br.readLine(); for(int j =

JAVA 문제 60 - TV 크기 BAEKJOON 1297 [내부링크]

JAVA 문제 60 - TV 크기 BAEKJOON 1297 TV 보기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] num = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); double tv = Math.sqrt(Math.pow(num[0],2) / ( Math.pow(num[1],2) + Math.pow(num[2],2) )); Sys

JAVA 문제 61 - 두수 비교하기 BAEKJOON 1330 [내부링크]

JAVA 문제 61 - 두수 비교하기 BAEKJOON 1330 두수 비교하기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] num = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); String str = ""; if(num[0] == num[1]){ str = "=="; }else{ str = num[0] > num[1] ? ">" :

JAVA 문제 62 - 부재중 전화 BAEKJOON 1333 [내부링크]

JAVA 문제 62 - 부재중 전화 BAEKJOON 1333 부재중 전화 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] num = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); ArrayList<Boolean> s = new ArrayList<>(); int res = 0; for(int

JAVA 문제 63 - A/B BAEKJOON 1008 [내부링크]

JAVA 문제 63 - A/B BAEKJOON 1008 A / B 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); double[] num = Arrays.stream(br.readLine().split(" ")).mapToDouble(Double::parseDouble).toArray(); System.out.print(num[0] / num[1]); } } * 출처 1008번: A/B 1008번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 질문 검색 A/

JAVA 문제 55 - 핸드폰 요금 BAEKJOON 1267 [내부링크]

JAVA 문제 55 - 핸드폰 요금 BAEKJOON 1267 핸드폰 요금 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.stream.Stream; class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cnt = Integer.parseInt(br.readLine()); int[] arr = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); int M = 0; int Y = 0; if(cnt == arr.length){

MyBatis(마이바티스) - MSSQL insert 자동 생성키 리턴 받는 방법 [내부링크]

MyBatis(마이바티스) - MSSQL insert 자동 생성키 리턴 받는 방법 - MSSQL에선 자동증가를 지원하는데, mybatis에서 insert시 자동증가한 값을 저장해야 할 경우를 다룬 글이다. <!-- mybatis 내용 --> <insert id="id명" > <selectKey keyProperty="프로퍼티명" > insert into 테이블명(컬럼1, 컬럼2 ...) values(#{컬럼1}, #{컬럼2} ...) select SCORE_IDENTITY() AS 프로퍼티명 </selectKey> </insert> - mybatis에서 MSSQL insert가 동작할 때의 값을 key에 담기 위해 score_identity()를 써야 insert한 key값을 가져올 수 있다. - SCORE_IDENTITY()는 현재 실행한 프로세스 내의 마지막 프로퍼티값을 가져오기 때문에 SCORE_IDENTITY()를 사용했다. - 만약, @@IDENTITY나 IDENT_CURR

SQL(ORACLE 기준) - join된 테이블 delete [내부링크]

SQL(ORACLE 기준) - join된 테이블 delete - Oracle에서 delete할 때 join 조건에 맞춰서 지우고 싶을 때 사용하는 방식이다. join table delete 방법 -- delete 방법(left join) DELETE FROM 테이블1 WHERE EXISTS ( SELECT 1 FROM 테이블2 left outer join 테이블 3 on 테이블2.컬럼1 = 테이블3.컬럼1 WHERE 테이블1.컬럼1 = 테이블2.컬럼1 ); -- delete 방법(right join) DELETE FROM 테이블1 WHERE EXISTS ( SELECT 1 FROM 테이블2 right outer join 테이블 3 on 테이블2.컬럼1 = 테이블3.컬럼1 WHERE 테이블1.컬럼1 = 테이블2.컬럼1 ); - 조건에 맞춰서 데이터를 검색하기 위해 테이블 1, 2는 동일 테이블이다. - join 조건이 충족됬을 때 1을 출력하는데, 1을 출력한 데이터를 delete

JAVA 문제 56 - 임시 반장 정하기 BAEKJOON 1268 [내부링크]

JAVA 문제 56 - 임시 반장 정하기 BAEKJOON 1268 임시 반장 정하기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Set; import java.util.HashSet; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cnt = Integer.parseInt(br.readLine()); int[][] table = new int[cnt][5]; int num = 0; int num2 = 0; for (int i = 0; i < cnt; i++) { String[] str = br.re

Kotlin - Properties [내부링크]

Kotlin - Properties // 클래스를 이용한 properties 선언 class Address { var name: String = "Holmes, Sherlock" var street: String = "Baker" var city: String = "London" var state: String? = null var zip: String = "123456" } // properties 참조하는 방법 fun copyAddress(address: Address): Address { val result = Address() // there's no 'new' keyword in Kotlin result.name = address.name // accessors are called result.street = address.street // ... return result } - properties(속성)사용할 때 보통 속성이름에 맞춰 값을 설정하는데, 그 방법은 되게 다양

JAVA 문제 57 - 엄청난 부자2 BAEKJOON 1271 [내부링크]

JAVA 문제 57 - 엄청난 부자2 BAEKJOON 1271 엄청난 부자2 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; class Main { public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = br.readLine().split(" "); BigInteger n = new BigInteger(arr[0]); BigInteger m = new BigInteger(arr[1]); System.out.println(n.divide(m)); System.out.println(n.remainder(m));

Jquery - 팝업 바깥 클릭 시 창 닫기 [내부링크]

Jquery - 팝업 바깥 클릭 시 창 닫기 // 1. 클릭 이벤트 $(document).on('click', function(e) { // 2. 팝업 밖 클릭 if($(e.target).closest('#팝업id').length == 0) { // 3. 팝업 밖일 경우 창 닫기 $("#팝업id").hide(); } }) 1. js의 click 함수의 매개변수를 이용한다. 2. 클릭 시 click 매개변수를 사용하여 팝업의 길이를 찾는다. 3. 만약, 팝업 밖을 클릭했을 경우 창 닫기가 실행된다.

SQL(MySQL/MariaDB) - PREPARE Statement [내부링크]

SQL(MySQL/MariaDB) - PREPARE Statement - prepare를 사용하여 실행할 SQL문에 이름을 붙여서 사용할 수 있다. PREPARE Statement -- 선언 방법 -- stmt_name은 실행할 쿼리내용의 이름이다. PREPARE stmt_name FROM 실행할 쿼리내용; * prepare를 사용할 경우 특징 1.실행할 쿼리 내용엔 SQL문구를 나타내야 한다. 2. 쿼리 내용에 '?'를 사용하여 매개변수를 넣어서 실행할 수 있는데, 이 때 반드시 매개변수를 세팅해줘야 하며, 매개변수 데이터 값이 필요할 때 사용할 수 있다. 3. 세션이 종료될 때 prepare로 선언한 쿼리는 더이상 존재하지 않으며, 자동 재연결인 경우에만 사용 가능하다. * 출처 13.5.1 PREPARE Statement PREPARE stmt_name FROM preparable_stmt The PREPARE statement prepares a SQL statement an

JAVA 문제 51 - 이진수 덧셈 BAEKJOON 1252 [내부링크]

JAVA 문제 51 - 이진수 덧셈 BAEKJOON 1252 이진수 덧셈 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); BigInteger num = new BigInteger(st.nextToken(),2); BigInteger num2 = new BigInteger(st.ne

JAVA 문제 52 - 팰린드롬수 BAEKJOON 1259 [내부링크]

JAVA 문제 52 - 팰린드롬수 BAEKJOON 1259 팰린드롬수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); List<String> list = new ArrayList<>(); while(true){ String str = br.readLine(); if(str.equals("0")){ break; } list.add(str); } for(String str : list){ String res

JAVA 문제 53 - 모음의 개수 BAEKJOON 1264 [내부링크]

JAVA 문제 53 - 모음의 개수 BAEKJOON 1264 모음의 개수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cnt =0 ; while(true){ cnt = 0; String str = br.readLine().toUpperCase(); if(str.equals("#")){ break; } cnt += str.chars().filter(c -> (c == 'I' || c == 'O' || c == 'A' || c == 'U' || c == 'E') ).count();

자바 기초 60 - Stream의 filter와 count를 사용한 특정 문자 개수 세기 [내부링크]

자바 기초 60 - Stream의 filter와 count를 사용한 특정 문자 개수 세기 - stream의 filter를 이용하여 특정 문자 개수를 확인할 수 있다. stream, filter 사용 -- 사용법 문자열 변수명.chars().filter(c -> (c == '특정문자').count(); - filter와 count를 이용하여 확인할 문자열 변수에서 특정 문자 개수를 셀 수 있다. - 자세한 예시 링크 JAVA 문제 53 - 모음의 개수 BAEKJOON 1004 JAVA 문제 53 - 모음의 개수 BAEKJOON 1004 모음의 개수 풀이 - stream을 이용한 풀이 * 출처 blog.naver.com

SQL(MySQL/MariaDB) - Insert문 최적화 [내부링크]

SQL(MySQL/MariaDB) - Insert문 최적화(Bulk Insert) mysql에서 insert문을 최적화하는 방법을 제시한다. mysql에서의 insert문 절차 연결(3) 서버 쿼리 전송(2) 쿼리 구문 분석(2) 행 크기만큼 insert(행크기 * 1) 인덱스 insert(인덱스 수 * 1) 종료(1) - 위의 숫자는 대략적인 비율을 나타내는데, 동시 실행 쿼리에 대해 한번씩 수행되는 테이블 검색에 대해 초기 오버헤드를 고려하지 않는다. - 그렇기에, INSERT를 최적화하기 위해 다음과 같은 방법을 제시한다. 1. bulk_inser_buffer_size 변수 조정(bulk_insert) /etc/mysql/my.cnf에서 [mysqld] 항목 아래 bulk_insert_buffer_size를 변경 -- mysql에서 바로 적용(재시작 시 초기화) set global bulk_insert_buffer_size = 변경할 값 -- 확인 SHOW VARIABLES L

SQL(MySQL/MariaDB) - DO 문 [내부링크]

SQL(MySQL/MariaDB) - DO 문 DO문은 실행 시 결과를 반환하지 않으며, SELECT보다 조금 더 빠르다는 장점이 있다. 결과 출력과 관계없는 함수나, 트리거에 주로 사용된다. DO 사용법 -- SELECT FUNCTION SELECT FUNCTION명; -- DO FUNCTION DO FUNCTION명; DO문은 'SELECT 컬럼명 FROM 테이블명' 같은 결과를 출력하는데 부적합하다. * 출처 13.2.3 DO Statement DO expr [ , expr ] . . . DO executes the expressions but does not return any results. In most respects, DO is shorthand for SELECT expr , ... , but has the advantage that it is slightly faster when you do not care about the result. DO is useful p

SQL(ORACLE 기준) - 다른 테이블 데이터 복사한 테이블 생성 [내부링크]

SQL(ORACLE 기준) - 다른 테이블 데이터 복사한 테이블 생성 -- 복사하기 CREATE TABLE 복사한 테이블명 AS SELECT * FROM 복사할 테이블명; 테이블 내용 그대로를 복사할 수 있는 방법이다.

SQL(MySQL/MariaDB) - Select Into 문 [내부링크]

SQL(MySQL/MariaDB) - Select Into 문 MySQL에서 SELECT ... INTO 형식을 통해 SELECT한 값을 쿼리 결과에 저장하거나 파일에 쓸 수 있다. Select Into 문 예시 -- var_list열 값을 선택하고 변수에 저장 SELECT * INTO var_list from 테이블명; -- var_list란 각각 사용자 정의 변수, -- 저장 프로시저 또는 함수 매개변수 -- 또는 저장 프로그램 지역 변수가 -- 될 수 있는 하나 이상의 변수 목록을 말한다. -- 단일행 제한 데이터 저장 select 컬럼명1, 컬럼명2 into 변수명1, 변수명 2 from 테이블명 limit 1; -- select한 수와 변수의 개수는 일치해야한다. * 출처 / / SELECT ... INTO Statement 13.2.9.1 SELECT ... INTO Statement The SELECT ... INTO form of SELECT enables a quer

JAVA 문제 54 - 분수찾기 BAEKJOON 1193 [내부링크]

JAVA 문제 54 - 분수찾기 BAEKJOON 1193 분수 찾기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int cnt = 0; int cnt2 = 0; while (true) { if((cnt += (++cnt2)) >= num) { if(cnt2 % 2 == 0) { System.out.println(num - cnt + cnt2 + "/" + (cnt - num + 1)); }else { System.

JAVA 문제 48 - 주사위 BAEKJOON 1233 [내부링크]

JAVA 문제 48 - 주사위 BAEKJOON 1233 주사위 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = br.readLine().split(" "); int[] num = new int[Integer.parseInt(arr[0])]; int[] num2 = new int[Integer.parseInt(arr[1])]; int[] num3 = new int[Integer.parseInt(arr[2])]; int res = 0; for (int i = 0; i

JAVA 문제 49 - 성 지키기 BAEKJOON 1236 [내부링크]

JAVA 문제 49 - 성 지키기 BAEKJOON 1236 성 지키기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()); int cnt = 0; int cnt2 = 0; String[]

JAVA 문제 50 - 부호 BAEKJOON 1247 [내부링크]

JAVA 문제 50 - 부호 BAEKJOON 1247 부호 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int i = 0; i < 3; i++) { BigInteger S = new BigInteger("0"); int num = Integer.parseInt(br.readLine()); for(int j = 0; j < num; j++) { BigInteger num2 = new BigInteger(br.readLine());

JAVA 문제 37 - 저항 BAEKJOON 1076 [내부링크]

JAVA 문제 37 - 저항 BAEKJOON 1076 저항 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayList<String> list = new ArrayList<>(); list.add("black"); list.add("brown"); list.add("red"); list.add("orange"); list.add("yellow"); list.add("green"); list.add("blue"); list.add("violet"); l

JAVA 문제 38 - 직사각형에서 탈출 BAEKJOON 1085 [내부링크]

JAVA 문제 38 - 직사각형에서 탈출 BAEKJOON 1085 직사각형에서 탈출 풀이 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()," "); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); int w = Integer.parseInt

JAVA 문제 39 - 하얀 칸 BAEKJOON 1100 [내부링크]

JAVA 문제 39 - 하얀 칸 BAEKJOON 1100 하얀 칸 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[][] chess = new char[8][8]; int num = 0; for(int i=0;i<8;i++){ String str = br.readLine(); for(int j=0; j<8; j++){ chess[i][j] = str.charAt(j); if((i+j) % 2 == 0 && chess[i][j] == 'F'){ num++; } } }

JAVA 문제 40 - 더하기 사이클BAEKJOON 1110 [내부링크]

JAVA 문제 40 - 더하기 사이클BAEKJOON 1110 더하기 사이클 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main (String[] args) throws java.lang.Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int cnt = 0; int num2 = num; do { num = ((num % 10) * 10) + (((num / 10) + (num % 10)) % 10); cnt++; } while (num2 != num); System.out.println(cnt); } } * 출

JAVA 문제 41 - 적어도 대부분의 배수 BAEKJOON 1145 [내부링크]

JAVA 문제 41 - 적어도 대부분의 배수 BAEKJOON 1145 - 5개 입력한다음 입력한 값으로 특정 값을 나눴을 때 나머지가 0인게 3개 이상이면 특정 값 출력하는 문제 적어도 대부분의 배수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] numArr = new int[5]; int cnt; int num = 1; StringTokenizer st = new StringTokenizer(br.readLine())

MSSQL - VIEW DDL 정보 확인하기 [내부링크]

MSSQL - VIEW DDL 정보 확인하기 -- DDL 정보 확인 sp_helptext VIEW명; - sp_helptext를 이용해서 VIEW의 DDL 정보를 확인할 수 있다.

JAVA 문제 42 - 단어의 개수 BAEKJOON 1152 [내부링크]

JAVA 문제 42 - 단어의 개수 BAEKJOON 1152 단어의 개수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()," "); System.out.print(st.countTokens()); } } - 공백 기준으로 단어를 나눈뒤, 해당 단어 개수 만큼 세기 * 출처 1152번: 단어의 개수 1152번 제출 맞힌 사람 숏코딩 재채

JAVA 문제 43 - 단어 공부 BAEKJOON 1157 [내부링크]

JAVA 문제 43 - 단어 공부 BAEKJOON 1157 단어 공부 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str= br.readLine().toUpperCase(); int[] cnt = new int[26]; for (int i = 0; i < str.length(); i++) { int num = str.charAt(i) -'A' ; cnt[num]++; } int max = 0; char ans = '

JAVA 문제 44 - 농구 경기BAEKJOON 1159 [내부링크]

JAVA 문제 44 - 농구 경기BAEKJOON 1159 농구 경기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int[] cnt = new int[26]; for(int i=0; i<num; i++){ String str = br.readLine().toLowerCase(); int num2 = str.charAt(0) - 'a'; cnt[num2]+

JAVA 문제 45 - 운동 BAEKJOON 1173 [내부링크]

JAVA 문제 45 - 운동 BAEKJOON 1173 운동 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); // 시간 int m = Integer.parseInt(st.nextToken()); // 초기 맥박 int M = Integer.parseInt(st

JAVA 문제 46 - 8진수 2진수 BAEKJOON 1212 [내부링크]

JAVA 문제 46 - 8진수 2진수 BAEKJOON 1212 8진수 2진수 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = {"000","001","010","011","100","101","110","111"}; String str = br.readLine(); StringBuilder sb = new StringBuilder(); for(int i=0; i<str.length(); i++ ){ int

JAVA 문제 47 - 이상한 곱셈 BAEKJOON 1225 [내부링크]

JAVA 문제 47 - 이상한 곱셈 BAEKJOON 1225 이상한 곱셈 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str[] = br.readLine().split(" "); long num = 0; for(int i=0; i<str[0].length(); i++){ for(int j=0; j<str[1].length(); j++){ num += Integer.parseInt(String.valueOf(str[0

JAVA 문제 29 - 2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임 [내부링크]

JAVA 문제 28 - 2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임 2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임 풀이 import java.util.Stack; class Solution { public int solution(int[][] board, int[] moves) { int answer = 0; Stack<Integer> s = new Stack<>(); for (int i : moves) { for (int j = 0; j < board.length; j++) { if (board[j][i - 1] != 0) { if (s.isEmpty()) { s.push(board[j][i - 1]); board[j][i - 1] = 0; break; } if (board[j][i - 1] == s.peek()) { s.pop(); answer += 2; } else s.push(board[j][i - 1]); board[j][i - 1] = 0; brea

JAVA 문제 30 - 수열의 합 BAEKJOON 1024 [내부링크]

JAVA 문제 30 - 수열의 합 BAEKJOON 1024 * 예제 입력에서 총합과 길이(2보다 크거나 같은 수)가 주어졌을 때 - 시작 값이 (총합 / 길이) - ((길이 - 1) / 2)의 공식을 갖추고 있다. - 그럼 시작 값을 기준으로 출력을 해야하는데,, 해당 수열이 정상적으로 출력된 경우를 보면 (시작값 + 마지막 값) * (길이 / 2) 만큼의 반복을 돌 경우 값이 나오는 걸 확인할 수 있다. 수열의 합 풀이 import java.util.*; import java.lang.*; import java.io.*; class Main{ public static void main (String[] args) throws java.lang.Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputS

JAVA 문제 31 - 어린 왕자 BAEKJOON 1004 [내부링크]

JAVA 문제 31 - 어린 왕자 BAEKJOON 1004 - 첫번째 줄 테스트 케이스 개수 - 그 다음줄의 첫번째 줄부터 각각 테스트케이스에 대한 출발, 도착점 - 두번째 줄엔 행성계 수 - 세번째 줄엔 N개의 행성계의 중점, 반지름 어린 왕자 풀이 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); while(T > 0) { StringTokenizer st=new StringTokenizer(br.readLine()); int x1=Integer.parseInt(st.nextToken()); int y1=Integer.p

JAVA 문제 32 - ACM Craft BAEKJOON 1005 [내부링크]

JAVA 문제 32 - ACM Craft BAEKJOON 1005 - 특정 건물을 지으려면 특정 건물 이전의 건물들이 모두 지어져야 짓는 명령을 수행한다는 특징을 가진 문제로 위상 정렬과 관련된 문제였다. ACM Craft 풀이 import java.util.*; import java.io.*; class Main { static int N; static int K; static int[] D; static void building(int[] arr, List<List<Integer>> list, int tar) { Queue<Integer> q = new LinkedList<Integer>(); int[] result = new int[N+1]; // 건물의 소요시간 for(int i=1; i<=N; i++) { result[i] = D[i]; if(arr[i] == 0) q.offer(i); } // 총 소요시간 = 이전까지의 소요시간 + 현재 건물 소요시간 while(!q.is

JAVA 문제 33 - 분산처리 BAEKJOON 1009 [내부링크]

JAVA 문제 33 - 분산처리 BAEKJOON 1009 분산처리 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cnt = Integer.parseInt(br.readLine()); for(int j=0;j<cnt;j++) { StringTokenizer st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Inte

JAVA 문제 34 - 제곱수 찾기 BAEKJOON 1025 [내부링크]

JAVA 문제 34 - 제곱수 찾기 BAEKJOON 1025 제곱수 찾기 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class Main{ public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); int

MSSQL - 교집합, 차집합 [내부링크]

MSSQL - 교집합, 차집합 - MSSQL에선 교집합과 차집합 기능을 하는 함수를 지원한다. - 사용 시 반드시 열의 개수나 순서가 모든 쿼리에서 동일해야하며, 데이터 형식이 호환되어야 한다. 교집합, 차집합 -- 구문 { 쿼리 식} { EXCEPT | INTERSECT } { 쿼리 식} -- EXCEPT(차집합) 사용법 SELECT ProductID FROM Production.Product EXCEPT SELECT ProductID FROM Production.WorkOrder ; -- INTERSECT(교집합) 사용법 SELECT ProductID FROM Production.Product INTERSECT SELECT ProductID FROM Production.WorkOrder ; - 해당 함수를 사용할 땐 쿼리 식에서 열의 정의가 같을 필요는 없으나, 암시적 변환을 통해 비교할 수 있을 정도는 되어야 한다. - 만약 다른 경우 비교를 위해 데이터 형식 우선 순위의 규칙

MSSQL - 세계 시간 변환 [내부링크]

MSSQL - 세계 시간 변환 - MSSQL에서 현재 타 국가의 시간을 알려주는 AT TIME ZONE을 제공한다. - AT TIME ZONE은 SQL Server 2016(13.x) 이상 버전에서 사용가능 하다. AT TIME ZONE 예제 -- 사용법 INPUTDATE AT TIME ZONE TIMEZONE - INPUTDATE : datetime과 비슷하거나 같은 형식의 데이터를 의미한다. - 반환값은 대상 표준 시간대의 datetimeoffset 값이다. * 출처 AT TIME ZONE(Transact-SQL) - SQL Server AT TIME ZONE(Transact-SQL) docs.microsoft.com

MSSQL - SQL Server 시작 이후의 연결 수 확인 [내부링크]

MSSQL - SQL Server 시작 이후의 연결 수 확인 - MSSQL 에선 시스템 통계에 관련된 스칼라 함수를 제공하는데 @@CONNECTIONS를 이용하여 마지막으로 SQL Server를 시작한 이후 성공하거나 성공하지 못한 시도된 모든 연결 수를 알 수 있다. @@CONNECTIONS 예제 -- 사용법 @@CONNECTIONS -- 현재 시간과 연결 수 확인 SELECT GETDATE() AS CURRENT_TIME, @@CONNECTIONS ; * 출처 @@CONNECTIONS(Transact-SQL) - SQL Server @@CONNECTIONS(Transact-SQL) docs.microsoft.com

JAVA 문제 35 - 명령 프롬프트BAEKJOON 1032 [내부링크]

JAVA 문제 35 - 명령 프롬프트BAEKJOON 1032 명령 프롬프트 풀이 import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); String[] fileArr = new String[num]; for (int i = 0; i < num; i++) { fileArr[i] = br.readLine(); } for (int i = 0; i < fileArr[0].length(); i++) { boolean chk = false

JAVA 문제 36 - 나누기 BAEKJOON 1075 [내부링크]

JAVA 문제 36 - 나누기 BAEKJOON 1075 나누기 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int mod = Integer.parseInt(br.readLine()); num -= (num % 100); while(true) { if(num % mod == 0) { break; } num++; } System.out.printf("%02d", (num % 100)); } } * 출처 1075번:

MSSQL - CURRENT_USER와 SUSER_NAME의 차이 [내부링크]

MSSQL - CURRENT_USER와 SUSER_NAME의 차이 - 둘다 현재 사용자의 이름을 반환하지만 큰 차이점은 CURRENT_USER()는 현재 보안 컨텍스트의 이름을, SUSER_NAME()은 현재 사용자의 ID를 반환한다. CURRENT_USER / SUSER_NAME 예시 -- CURRENT_USER 작성법 SELECT CURRENT_USER; -- CURRENT_USER를 다른 사용자 명으로 보여주고 싶은 경우 EXECUTE AS USER = '가장할 사용자명' -- 다시 되돌리는 방법 REVERT; SELECT CURRENT_USER; -- SUSER_NAME 작성법 SELECT SUSER_NAME([서버 ID]); - CURRENT_USER 함수는 사용자명을 가장해서 다른 사용자명으로 보여줄 수 있다. - SUSER_NAME은 매개변수를 지정하지 않을 경우 현재 사용자에 대한 로그인 id이름이 반환되는데 서버 ID에 NULL이라는 단어가 포함되어 있으면 NULL이

MSSQL - 문자열 역순 반환 [내부링크]

MSSQL - 문자열 역순 반환 - REVERSE() 함수를 통해 문자열을 역순으로 반환한다. REVERSE() 사용법 -- 사용법 SELECT REVERSE('문자열') - REVERSE()함수는 말 그대로 문자열 자체를 반대로 반환해준다.(영어 대소문자 상관없이 무조건 역순으로 반환한다.) * 출처 REVERSE(Transact-SQL) - SQL Server REVERSE(Transact-SQL) docs.microsoft.com

MSSQL - 반복된 공백 문자열 반환 [내부링크]

MSSQL - 반복된 공백 문자열 반환 - SPACE 또는 REPLICATE를 사용한다. 반복된 공백 문자열 반환 -- 사용법 SELECT SPACE(공백 반복 횟수) -- 문자열 1과 2 사이에 공백 값 넣기 SELECT '문자열1' + SPACE(공백 문자열 수) + '문자열2' -- 사용법 SELECT REPLICATE('문자 또는 이진 데이터 형식의 식',반복횟수) -- 문자열 A 앞에 0 4번 붙이기 SELECT REPLICATE('0',4) + 'A' - 유니코드 데이터가 공백 포함 또는 8000개가 넘는 공백을 반환할 경우 SPACE 대신 REPLICATE를 사용한다. - REPLCATE는 특정 문자를 반복횟수만큼 출력할 수 있다. * 출처 SPACE (Transact-SQL) - SQL Server SPACE(Transact-SQL) docs.microsoft.com REPLICATE(Transact-SQL) - SQL Server REPLICATE(Transact-S

MSSQL - 사용자 정의 메시지 반환 [내부링크]

MSSQL - 사용자 정의 메시지 반환 - PRINT, RAISERROR를 이용해서 사용자 정의 메시지를 반환할 수 있다. PRINT, RAISERROR -- PRINT 사용법 PRINT '문자열 또는 유니코드 문자열 상수' | 유효한 문자 데이터 형식의 변수 | 문자열 반환 식 -- RAISERROR 사용법 RAISERROR ( { '사용자 정의 오류 메시지 번호' | '사용자 정의 메시지' | '사용자 정의 메시지와 동일한 형식의 문자열 변수' } { ,사용자 정의 심각도 ,상태 번호 } [ ,argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] -- argument : 사용자 정의 메시지에 대체되는 매개변수 또는 사용자 정의 오류 메시지 번호에 해당하는 메시지 -- with option : 오류에 대한 옵션(오류 로그 기록, 클라이언트에 메시지 전송, 심각도에 상관없이 오류 메시지 반환) - RAISERROR는 PRINT에 비해 3가지 장점이

JAVA 문제 26 - 2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어 [내부링크]

JAVA 문제 26 - 2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어 2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어 풀이 class Solution { public int solution(String s) { String[] num= {"0","1","2","3","4","5","6","7","8","9"}; String[] word= {"zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine"}; for (int i = 0 ; i <10 ; i++){ s = s.replace(word[i] , num[i]); } return Integer.parseInt(s); } } * 출처 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게

JAVA 문제 27 - 2020 카카오 인턴십 키패드 누르기 [내부링크]

JAVA 문제 27 - 2020 카카오 인턴십 키패드 누르기 2020 카카오 인턴십 키패드 누르기 풀이 class Solution { public String solution(int[] numbers, String hand) { StringBuilder a = new StringBuilder(); int left = 10, right = 12; for (int num : numbers) { if (num == 0) num = 11; switch (num % 3) { case 0 -> { a.append("R"); right = num; } case 1 -> { a.append("L"); left = num; } case 2 -> { int minusL = (num > left) ? num - left : left - num; int minusR = (num > right) ? num - right : right - num; int distanceL = (minusL % 3) + (m

JAVA 문제 28 - 터렛 BAEKJOON 1002 [내부링크]

자바 문제 28 - 터렛 BAEKJOON 1002 터렛 BAEKJOON 1002 풀이 import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st; int p = Integer.parseInt(bf.readLine()); for (int i = 0; i < p; i++) { st = new StringTokenizer(bf.readLine()); int x1 = Integer.parseInt(st.nextToken

MSSQL - hierarchyid 데이터 형식 [내부링크]

MSSQL - hierarchyid 데이터 형식 - hierarchyid 데이터 형식은 계층에서 위치를 나타내는 데 사용되되며 가변 길이의 시스템 데이터 형식이다. hierarchyid 데이터 형식의 속성 1. 높은 앞축성 - 트리 구조에서 노드를 나타내는 데 필요한 평균 비트 수는 평균(fanout - 노드의 평균 자식 수)에 따라 다른데, 스토리지를 위해 40비트나 5바이트로 반올림된다. 2. 깊이 우선 순서로 비교 - 깊이 우선 트리 탐색에서 값의 크기에 따라 탐색 순서가 변경되며, 서로 가까이 있는 노드는 서로 가깝게 저장된다. 3. 임의 삽입 및 삭제 지원 - getDescendant 메서드를 사용하면 지정한 노드의 오른쪽 / 왼쪽 또는 두 형제 사이에 형제를 생성할 수 있으.......

MSSQL - DB 스냅샷 [내부링크]

MSSQL - DB 스냅샷 - 스냅샷이란 특정 시간에 있던 데이터가 존재하고 유지시킨 컴퓨터 파일과 디렉터리 모임을 의미하는데, DB 스냅샷은 트랜잭션과 연관성이 있다. - DB 스냅샷은 스냅샷을 만든 시점의 원본 DB와 트랜잭션이 일치하고 항상 원본 DB와 동일한 서버 인스턴스에 존재하며, 파일의 크기는 원본 DB에 따라 변경된다. - DB 스냅샷은 DB의 트랜잭션이 일치하는 읽기 전용 정적 뷰를 의미한다. - 특정 동작을 수행하기 전에 원본 데이터는 스냅샷에 복사되면서 만들어질 때 상태 그대로 데이터 레코드를 유지하는데, 사용자에게 변경되지 않는 것 처럼 보여진다. DB 스냅샷의 이점 1. 보고 용도로 사용 가능 - 스냅샷 생성 시의 데이터.......

MSSQL - 비대칭 키 ID 반환 함수 [내부링크]

MSSQL - 비대칭 키 ID 반환 함수 - ASYMKEY_ID 함수는 비대칭 키의 ID를 반환한다. ASYMKEY_ID 예제 - 해당 함수는 INT 값을 반환한다. - 비대칭 키에 대해 적절한 사용 권한이 필요하며, 비대칭 키에 대한 호출자의 VIEW 권한이 거부되면 안된다. * 출처

MSSQL - PUBLISHINGSERVERNAME [내부링크]

MSSQL - PUBLISHINGSERVERNAME - DB 미러링 세션에 참여하는 게시된 DB의 원래 게시자 이름을 반환하는 함수다. - 이 함수는 게시된 DB의 원래 게시자를 확인할 수 있으며,모든 유형의 복제에 사용된다. - PUBLISHINGSERVERNAME 함수는 미러 서버 인스턴스에 있는 게시 DB에서 실행 시 DB를 원래 게시한 게시자의 이름이 반환된다. - 만약, 미러 서버 인스턴스에 게시되지 않은 DB나 장애 조치 후 미러 서버 인스턴스에서 게시한 DB에서 실행하면 해당 미러 서버 인스턴스 이름이 반환된다. - 장애 조치란, 1차 시스템이 고장 또는 특정 사유로 인해 이용할 수 없을 경우 기존 기능을 이어 받아 진행할 수 있도록 유지되는 백업 운전 모드를 의미.......

MSSQL - 바이트 수 구하기 [내부링크]

MSSQL - 바이트 수 구하기 - MSSQL에서 바이트 수를 구해주는 함수인 DATALENGTH()를 제공한다. DATALENGTH() 사용방법 - nvarchar와 같은 가변 길이 데이터를 저장할 수 있는 데이터 형식과 함께 사용할 때 매우 유용하다. - 현재 필자 pc에는 한글 한 자당 2byte로 측정되어 있어서 &#34;확인&#34;값을 넣으면 4가 나온다. * 출처

MSSQL - 문자열 그룹화하기 [내부링크]

MSSQL - 문자열 그룹화하기 - oracle의 LISTAGG, mysql의 group_concat과 같이 mssql에도 문자열을 그룹화하는 방법이 있다. - SQL Server 2017 버전 이상을 쓴다면 STRING_AGG() 함수를 사용하면 간단하다. - SQL Server 2016 버전 이하면 STUFF()를 사용하자 문자열 그룹화 - STUFF() 함수는 시작 위치 또는 길이가 음수이거나 시작 위치가 첫번째 문자열을 넘어서면 NULL 문자열이 반환되며, 시작위치가 0이여도 NULL값이 반환된다. - STUFF()는 첫번째 문자열이 중요하며, 삭제할 길이가 첫번째 문자열보다 길면 첫번째 문자까지 삭제된다. - STRING_AGG() 함수는 모든 호환성 수준에서 사용할 수 있다. * 출처

MSSQL - 데이터 타입 캐스팅 확인하기 [내부링크]

MSSQL - 데이터 타입 캐스팅 확인하기 - MSSQL 에선 지정한 TRY_CAST() 함수를 이용한다. TRY_CAST() 예제 - 함수명에서 알 수 있듯이 프로그래밍 언어에서의 TRY와 매우 흡사한 기능을 갖고 있는데, 데이터 타입을 제대로 명시하지 않으면 NULL을 반환한다. * 출처 https://docs.microsoft.com/ko-kr/sql/t-sql/functions/try-cast-transact-sql?view&#x3D;sql-server-ver15

MSSQL - 논리식 판별 함수 [내부링크]

MSSQL - 논리식 판별 함수 - MSSQL에선 논리값을 판별하는 IIF() 함수를 지원한다. IIF 예제 - 해당 함수는 CASE문의 약식 방법중 하나로, CASE문에 적용되는 규칙이 IIF에서도 적용된다. - IIF는 Azure Synapse Analytics의 전용 SQL 풀에서 지원되지 않는다. * 출처

MSSQL - 지정한 날짜가 포함된 달의 마지막 날을 반환하는 방법 [내부링크]

MSSQL - 지정한 날짜가 포함된 달의 마지막 날을 반환하는 방법 - MSSQL 에선 특정 달의 마지막 날을 구할 수 있는 EOMONTH() 함수를 제공한다. EOMONTH() 예제 - EOMONTH()의 함수의 첫번째 매개변수에는 기준 날짜를 작성한다. - 특정 기준 날짜에서 몇 달 뒤 혹은 몇 달 전의 마지막 날을 알고 싶다면, 2번째 매개변수에 양수 또는 음수값을 입력하여 이전 달, 이후 달의 마지막 날을 알 수 있다. * 출처

자바 알고리즘 - Buddy Memory allocation [내부링크]

자바 알고리즘 - Buddy Memory allocation - 효율적인 메모리 요청을 만족하도록 메모리를 여러 부분으로 나누는 메모리 할당 알고리즘이다. Buddy Memory allocation 작동 원리 1. 2의 거듭제곱값으로 메모리를 할당하는데, 시스템이 갖고 있는 메모리에 맞춰 최대 할당할 수 있는 블록이 존재한다. 2. 할당할 수 있는 메모리의 범위가 존재하는 만큼 상한선과 하한선(할당할 수 있는 가장 작은 메모리 블록 범위)를 정해줘야 하며, 이 점은 메모리 낭비를 낮추는데 용이하다. 3. 메모리 할당 시 프로그램에 요청 크기에 맞춰 검색해서 메모리 슬롯을 할당하지만, 만약 발견되지 않다면, 아래와 같이 메모리 슬롯을 만든다. 3-1) 요청된 메모리.......

MSSQL - 날짜 차이 구하기 [내부링크]

MSSQL - 날짜 차이 구하기 - MSSQL에서 날짜 차이를 구하는 방법을 작성한 글이다. MSSQL - 날짜 차이 구하기 - 날짜 1에서 날짜 2를 뺀 값을 나타내는 함수로 날짜 컬럼을 날짜1, 현재 날짜를 날짜 2에 넣어서 현재 날짜와의 차이를 구하는데 매우 용이하다. - 구분자는 다음과 같다. * 출처

자바 문제 24 - 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 [내부링크]

자바 문제 24 - 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 - HashMap으로 아이디를 세팅하고, HashSet을 통해 신고자, 대상자 id를 나누는데 Set특성을 이용하여 중복을 제거할 수 있다. - 아이디 리스트 길이만큼의 반복문에서 대상 아이디의 신고당한 횟수가 k(정지 기준 판별 신고 횟수)보다 적지 않을 경우 반환할 배열에 신고횟수를 추가해준다. * 출처

자바 문제 25 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위 [내부링크]

자바 문제 25 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 로또의 최고 순위와 최저 순위 풀이 - int배열에서 binarySearch를 이용하여 배열 안에 요소값이 있는지 체크한다. * 출처

자바 알고리즘 - 이진 트리 [내부링크]

자바 알고리즘 - 이진 트리 - 이진 트리란, 한 노드가 최대 2개의 자식 노드를 가질 수 있는 트리를 의미한다. - 흔히 사용되는 비선형 자료 구조로서 한 자료에 여러 자료가 존재할 수 있다. 이진트리의 종류 1. 포화 이진 트리(Full Binary Tree) - 모든 노드에 0또는 2개의 자식이 있는 이진 트리 2. 완전 이진 트리(Complete Binary Tree) - 마지막 레벨 노드 전의 노드는 반드시 존재한다. - 마지막 레벨에선 모든 노드가 가능한 왼쪽에 존재한다.(Heap과 관련있음) 3. 완벽 이진 트리(Perfect Binary Tree) - 모든 내부 노드에 2개의 자식이 있고, 모든 리프 노드가 동일한 깊이 또는 동일한 수준에 있는 이진 트리 4. 균형 이진 트리(Bala.......

MSSQL - 날짜 더하기 [내부링크]

MSSQL - 날짜 더하기 - MSSQL에서 날짜 더해주는 함수인 dateadd()를 제공한다. DATEADD 함수 사용법 - 더할 범위엔 아래 그림의 datepart를 적어주는데, datepart엔 약어가 존재한다. * datepart 약어 모음 * 출처

SQL(ORACLE 기준) - MOD와 REMAINDER의 차이 [내부링크]

SQL(ORACLE 기준) - MOD와 REMAINDER의 차이 - 함수명(대상값, 몫)으로 둘의 작성법은 같으며, 기능도 나머지를 출력하는 점이 동일하다. MOD와 REMAINDER의 차이 - 두 함수 기능은 같지만, 조금은 다른점이 있다. - 가장 큰 차이점은 음수를 매개변수로 썼을 때 두드러지는데, MOD는 음수를 절대값으로 변환하여 양수로 사용하지만, REMAINDER는 그렇지 않기에 서로 다른값이 나올 수 있다. - 몫을 추출할 때 REMAINDER는 ROUND함수를, MOD는 FLOOR함수를 쓴다는 점이 매우 크다. * 출처

SQL(MySQL/MariaDB) - 계층형 쿼리 WITH RECURSIVE [내부링크]

SQL(MySQL/MariaDB) - 계층형 쿼리 WITH RECURSIVE - mysql 5.7 이하 버전에선 사용할 수 없는 계층형 쿼리로, 재귀형식의 테이블을 표현할 수 있다. WITH RECURSIVE 사용법 - 주로 피보나치 수열 생성, 계층형 쿼리를 사용할 때 쓴다. * 출처

Fiddler 다운로드(Windows 기준) [내부링크]

Fiddler 다운로드(Windows 기준) - 웹 디버깅 툴인 fiddler를 Windows OS에서 다운로드 하는 걸 보여준다. Fiddler 다운로드 1. https://www.telerik.com/fiddler에 접속해서 try now 버튼을 클릭 2. 아래 사진에서 첫번째 입력칸에 자신의 이메일을, 그 아래엔 지역을 선택해주고 체크박스를 체크해준뒤 download를 하면 된다. - everywhere는 평가판으로 30일 무료고 Classic 버전으로 다운로드 하면 된다. 3. 다운로드 파일을 실행해주자 - 동의함을 눌러주면 자연스레 다운로드된다. 4. 실행 시 회원가입을 한 이메일로 접속하면 끝 5. 체크박스 체크한 뒤, 동의해주기 6. 시작하면 끝

localhost 폼 파라미터 확인(Fiddler 프로그램 사용) [내부링크]

localhost 폼 파라미터 확인(Fiddler 프로그램 사용) - 로컬에서 개발자도구의 네트워크 말고도 좀 더 명확하게 보고자 찾은 Fiddler에서 폼 파라미터를 확인하는 방법을 다룬 글이다. - Fiddler를 설치했다는 기준에서 사용하는 방법으로, 만약 설치못했다면 아래 url에서 보고 설치하고 오자(여기선 Everywhere로 설치했는데, 필자는 Classic을 추천한다.) Fiddler 폼 파라미터 확인 방법 - 좌측 탭의 url목록에서 보려고 한 url을 클릭 - 우측 탭의 Inspector 탭 이동 - 이후 WebForms탭 이동하면 해당 파라미터를 볼 수 있음

자바 알고리즘 - Free list [내부링크]

자바 알고리즘 - Free list - 동적 메모리 할당 체계에서 사용되는 데이터 구조로 사용 가능한 블록의 집합 - 메모리의 미할당 영역을 Linked List로 연결시켜서 운용하는 리스트로 모든 오브젝트들이 동일 크기를 갖고 있으면, Free list가 memory pool에서 메모리 할당하는데 가장 적합하다. - 할당/미할당 영역을 매우 간단하게 할당하거나 해제할 수 있으며, 영역 할당 시 Free list의 가장 끝 부분에 있는 영역을 제거하고 그 영역을 할당시키며, 할당 시 크기를 맞춰 영역을 찾는다. - Free list는 Linked List, CPU 캐시, 프로세서가 짧은 시간 동안 동일 메모리 위치 집합에 반복적인 접근 활용을 제대로 할 수 없는 단점을 가지고 있는.......

SQL 문제 53 - Draw The Triangle 1(HackerRank) [내부링크]

SQL 문제 53 - Draw The Triangle 1(HackerRank) Draw The Triangle 1 풀이 - 처음엔 문자를 붙여서 하는줄 알았는데 자세히 보니 문자 사이에 공백 한칸이 존재하는걸 알 수 있었다. - 오라클에서 CONNECT BY, MYSQL에선 변수 설정으로 임시 행을 생성한다. * 출처

SQL 문제 54 - Draw The Triangle 2(HackerRank) [내부링크]

SQL 문제 54 - Draw The Triangle 2(HackerRank) Draw The Triangle 2 풀이 - 이전과 달리 위에서 행번호에 맞춰 *을 출력하는 문제로 순서를 바꾸면 된다. - 이전 문제 MYSQL 풀이에서 시작 번호가 21여서 행 번호만큼 뺏지만, 이번 문제는 0부터 시작해서 행번호만큼 출력하기 위해 LIMIT를 이용한 풀이법이다. * 출처

SQL 문제 55 - Print Prime Numbers(HackerRank) [내부링크]

SQL 문제 55 - Print Prime Numbers(HackerRank) Print Prime Numbers 풀이 * 출처

SQL 문제 56 - 15 Days of Learning SQL(HackerRank) [내부링크]

SQL 문제 56 - 15 Days of Learning SQL(HackerRank) 15 Days of Learning SQL 풀이 - 2016-03-01부터 꾸준히 1회이상 제출한 해커나 최대 제출을 한 해커 출력하기 * 출처

SQL 문제 51 - Contest Leaderboard(HackerRank) [내부링크]

SQL 문제 51 - Contest Leaderboard(HackerRank) Contest Leaderboard 풀이 * 출처

SQL 문제 52 - Interviews(HackerRank) [내부링크]

SQL 문제 52 - Interviews(HackerRank) Interviews 풀이 * 출처

SQL 문제 46 - Average Population of Each Continent(HackerRank) [내부링크]

SQL 문제 46 - Average Population of Each Continent(HackerRank) Average Population of Each Continent 풀이 - CONTINENT의 평균값에서 내림으로 정수를 만드는데, 그룹화 하면 끝 * 출처

SQL 문제 47 - The Report(HackerRank) [내부링크]

SQL 문제 47 - The Report(HackerRank) The Report 풀이 - 점수 내림차순으로 출력할 때, 등급이 7 이하는 이름 내림차순으로 출력 * 출처

SQL 문제 48 - Top Competitors(HackerRank) [내부링크]

SQL 문제 48 - Top Competitors(HackerRank) - 문제가 좀 긴데, 필자가 영어에 매우 약해서 파파고의 힘을 빌렸다. - submissions 테이블에 score값이 difficulty 테이블의 score와 일치(만점)인 챌린지가 2개 이상인 참가자를 찾는 것 - submissions table : 제출한 사람들의 정보 - challenge table : 챌린지 사람들 정보 - difficulty table : 챌린지 스코어 - hacker table : 해커 사람들 정보 Top Competitors 풀이 - 솔직히 좀 헷갈리긴 했는데, 핵심은 챌린지 만점이 2개 이상인 사람을 찾는 것, 동일한 챌린지 만점인 사람이 있다면, 해커 id 오름차순으로 정렬하라는 것 - submissions 테이블의 hacker_id와 hacker 테이블의 hacker_id를.......

SQL 문제 49 - Ollivander's Inventory(HackerRank) [내부링크]

SQL 문제 49 - Ollivander&#x27;s Inventory(HackerRank) - 높은 power와 age를 가진 non-evil 지팡이에서 론이 구입할 때 최소 골드가 드는 지팡이를 정렬하는 문제 Ollivander&#x27;s Inventory 풀이 - non-evel &#x3D; 0, power, age의 그룹화된 지팡이들중 최소 금액 필요한 지팡이 정보를 서브쿼리로 가져온다. - 서브쿼리로 가져온 지팡이 정보(필요한 금액)를 완드 품질 테이블의 coin_needed 컬럼에 연결한 뒤, power / age 내림차순으로 출력 * 출처

MSSQL - 특정 컬럼을 수정/삭제 할 때 에러 해결 [내부링크]

MSSQL - 특정 컬럼을 수정/삭제 할 때 에러 해결 - MSSQL에서 특정 컬럼을 수정/삭제 할 때 &#x27;DF__TB_CONFIG_P__DESC__0D84EF7E&#x27;라는 에러 문제를 해결하고자 적은 글이다. 특정 컬럼을 수정/삭제 할 때 에러 해결 방법 - &#x27;DF__TB_CONFIG_P__DESC__0D84EF7E&#x27;란 제약조건이 있어서 생긴 문제로, 수정/ 삭제할 때 테이블의 &#x27;DF__TB_CONFIG_P__DESC__0D84EF7E&#x27; 제약조건을 삭제해주면 된다.

SQL 문제 50 - Challenges(HackerRank) [내부링크]

SQL 문제 50 - Challenges(HackerRank) Challenges 풀이 * 출처

자바 알고리즘 - 선형 리스트 [내부링크]

자바 알고리즘 - 선형 리스트 - 고정 크기의 데이터들을 자연스럽게 나열한 구조 - 자연스러운 구조에 맞춰 순차적인 데이터 이동에 유용하다. - 논리적, 물리적 순서가 같다는 점이 접근 속도가 빠르다. - 하지만, 리스트 원소 위치 변경 시 정렬 작업이 필요하므로 데이터가 많을 수록 많은 데이터의 이동으로 삽입, 삭제 시 비효율적이다. * 출처

자바 알고리즘 - 트리 [내부링크]

자바 알고리즘 - 트리 - 객체를 담는 구조로 나무와 같은 형태를 띄고 있으며 계층구조로 보면 이해하기 쉽다. - 트리는 노드를 기반으로 Root(맨 처음)노드와 파생 노드가 존재하는데, 파생된 노드에서 자식이 없는 노드를 Leaf 노드라고 하며, 파생된 노드에서 또 다른 자식을 갖고 있는 노드영역을 Sub Tree라고 한다. - 나무에서 잎이 뻗쳐지듯이, 노드끼리 이어진 선은 한개만 존재한다. * 출처

SQL 문제 23 - Binary Tree Nodes(HackerRank) [내부링크]

SQL 문제 23 - Binary Tree Nodes(HackerRank) - 노드 값으로 정렬된 이진 트리의 노드 유형을 찾는 문제로 이진 트리의 원리에 대해 알아야 한다. - Root : 최상위 노드 - Leaf : 최하위 노드 - Inner : Root도 Leaf도 아닌 노드 Binary Tree Nodes 풀이 - BST 테이블을 LEFT OUTER JOIN을 사용하여 푸는 문제다. * 출처

SQL 문제 24 - Type of Triangle(HackerRank) [내부링크]

SQL 문제 24 - Type of Triangle(HackerRank) Type of Triangle 풀이 * 출처

SQL 문제 25 - New Companies(HackerRank) [내부링크]

SQL 문제 25 - New Companies(HackerRank) - 회사코드, 설립자, 총 책임자 수, 총 선임 관리자 수, 총 관리자 수, 총 직원 수를 오름차순으로 정렬하여 출력하는 문제다. New Companies 풀이 - 각 계급별 직원을 구하기 위해 회사 코드 테이블에 계급별 코드로 연결한다. - 회사코드, 설립자를 그룹으로 묶은 뒤 계급별 책임자 수를 오른차순으로 출력 * 출처

SQL 문제 26 - Placements(HackerRank) [내부링크]

SQL 문제 26 - Placements(HackerRank) Placements 풀이 - 친구 테이블, 학생 테이블, 급여 테이블을 자신과, 가장 친한 친구에게 제공되는 급여 순서대로 조인하고 정렬하면 끝 * 출처

MSSQL - NULL 체크 [내부링크]

MSSQL - NULL 체크 - ORACLE의 NVL, MYSQL의 IFNULL과 동일한 함수로 ISNULL로 NULL을 체크한다. NULL 체크 함수 - IFNULL과 비슷하게 첫번째 인자에 NULL을 체크할 컬럼명과 컬럼 값에 NULL이 나온 경우 대체할 값을 두번째 인자에 작성해준다. * 출처

MSSQL - 정규식의 논리값 반환 [내부링크]

MSSQL - 정규식의 논리값 반환 - MSSQL에서는 논리식의 반환값이 참인지 거짓인지 반환하는 IIF문이 존재한다. IFF 예시 - 해당 IIF문은 CASE문을 작성하는 약식 방법으로, CASE문에서 적용되는 규칙이 IIF에서도 적용된다. * 출처

자바 알고리즘 - 병합 정렬 [내부링크]

자바 알고리즘 - 병합 정렬 - 병합 정렬은 비교 기반 정렬 알고리즘으로, 존 폰 노이만이 1945년에 개발한 알고리즘이다. 합병정렬 종류 1) 2-way 합병 - 정렬되지 않은 리스트를 각 한 원소만 포함하는 n개의 부분 리스트로 분할한 다음 부분 리스트가 하나만 남을때까지 반복해서 병합하며 정렬된 부분리스트로 만든다. 2) n-way 합병 - 리스트 길이가 1 이하일때까지 아래의 순서로 진행한다. - 분할(리스트를 절반으로 나눠 부분 리스트로 생성) - 정복(부분 리스트를 병합 정렬로 정렬) - 결합(정렬된 부분 리스트들을 다시 병합 후 임시 배열에 결과 저장) - 복사(임시 배열에 저장된 결고라르 원래 배열에 복사) 합병정렬 예시 * 출처

자바 알고리즘 - 보고 정렬 [내부링크]

자바 알고리즘 - 보고 정렬 - 정렬 알고리즘 중 비효율적인 정렬이다. - 실제 사용되는 알고리즘과 비교할 때 사용될 수 있는 알고리즘으로 논리형 프로그래밍의 예시로써도 사용되며, 카드를 섞을 때 사용되는 과정과 동일하다. 보고 정렬 실행 방식 - 위와 같이 deck(카드뭉치)가 정렬(not isInOrder)이 되지 않았을 때 정렬이 될때 까지 계속 카드뭉치를 섞는다(shuffle). 보고 정렬 예시 * 출처

자바 기초 59 - Random과 SecureRandom의 차이 [내부링크]

자바 기초 59 - Random과 SecureRandom의 차이 - java.util.Random 클래스와 java.security.SecureRandom 클래스의 차이에 대해 알아보자 Random과 SecureRandom의 차이 - Random이 들어간 클래스는 난수 생성기에서 시드(시간)를 통해 난수를 생성하는데, Random 클래스는 동일한 시간에 난수를 생성하면 동일한 시퀀스 값과 같은 시드가 반환(결정론적)되지만, SecureRandom 클래스는 동일한 시간에 난수를 생성하면 무작위 시드가 반환(비결정론적)된다. - 이런 점을 이용하여 암호화 방식에서의 난수는 Random 클래스보다 SecureRandom 클래스의 난수가 더 예측할 수 없으며 효과적이다. * 출처

자바 알고리즘 - 도수 정렬 [내부링크]

자바 알고리즘 - 도수 정렬 - 비교 요소들의 대소 관계를 판단하지 않고 빠르게 정렬하는 알고리즘이다. 도수 정렬 순서 1. 도수분포표 생성 1) A란 배열 요소 최댓값보다 +1만큼의 크기를 같은 배열(f)을 만들어서 해당 요소의 값을 요소 값에 맞는 인덱스에 +1을한다. 2. 누적도수분포표 생성 1) 1의 배열에서 a와 a+1를 더한 값을 a+1 인덱스에 넣는다. 2) 전과 동일하게 a+1과 그 a+2를 이후 a+2 인덱스에 넣는다. 3) 1)~2) 방법을 배열 1의 처음부터 끝까지 진행한다. 3. 목적 배열 생성 1) A배열 크기만큼의 목적 배열 b를 생성한다. 2) A 마지막 배열 요소 A[n] &#x3D; r을 통해 f[r]을 비교한 뒤 r값을 목적 배열 b[r-1]에 넣어준다. 3) .......

자바 알고리즘 - 브루트 포스 [내부링크]

자바 알고리즘 - 브루트 포스 - 모든 경우의 수를 탐색하면서 조건에 맞는 결과를 가져오는 알고리즘으로, 비효율적인 알고리즘이다. - 모든 경우의 수를 탐색한만큼 정확도 100%를 보장하며, 거의 완벽하게 병렬 작업이 가능하지만, 알고리즘을 사용할 자원이 중요하다. - 모든 경우의 수를 동원하기 때문에, 풀이 문제의 종류에 따라 다양한 해결 방법이 존재한다. - 복잡성이 높을 수록 매우 어려운 방법이며, 특정 횟수 안에 문제를 풀어야 할 경우 가장 어려운 알고리즘이다. * 출처

자바 알고리즘 - KMP 알고리즘 [내부링크]

자바 알고리즘 - KMP 알고리즘 - 문자열에서 특정 문자열을 패턴으로 설정한 다음 패턴이 얼마나 나오는지 알려주는 알고리즘이다. KMP 알고리즘 실행 순서 1) 특정 문자열(ex: &#34;abcdabckl&#34;)라는 문자열이 있을 때 특정 문자열을 배열화한 뒤, i란 접두사(인덱스 : 0)와 j(인덱스 : 1)란 접미사의 위치를 정한다. 2) i와 j가 매치되거나 i가 -1일때 한칸씩 전진한 뒤, j위치에 i를 저장한다. 3) 2번이 안됬을 경우 i는 상태전이함수에 있는 값으로 전환시킨 뒤 2)로 다시 돌아간다. 4) j가 n보다 커질 때 까지 반복 5) 상태 전이함수의 값을 출력한다. KMP 알고리즘 예시 * 출처

자바 알고리즘 - Boyer-Moore [내부링크]

자바 알고리즘 - Boyer-Moore - 패턴의 마지막 문자부터 역순으로 검사를 진행하며(오른쪽에서 왼쪽으로 비교함) 불일치 지점 발생 시 Bad Character방식과 Good Suffix방식 중에 더 큰 값만큼 이동하는 방식을 선택하는 알고리즘이다. Bad Character - 오른쪽에서 왼쪽으로 비교를 할 때 문자 비교 시 시작 지점을 찾도록 시작 지점 전 위치를 건너뛰는 방식이다. - 패턴 오른쪽부터 왼쪽으로 비교하여 불일치 지점을 찾은 뒤, 불일치 지점 위치의 문자와 일치하는 패턴의 가장 오른쪽 지점을 찾아 그만큼 이동한다. Good Suffix Rule - 불일치 지점을 찾으면 불일치 지점을 기준으로 일치한 부분(오른쪽)과 불일치 지점 앞에서 대응되는 부분(왼.......

JavaScript - 전개 구문 [내부링크]

JavaScript - 전개 구문 - 배열이나 문자열과 같이 반복가능한 문자를 함수로 호출할 경우 0개 이상의 인수 또는 요소로 확장시켜 0개 이상의 키-값 객체로 확장시킬 수 있다. 전개 구문 예시 - ES6이상에서 지원하므로 IE에선 지원을 안한다.. * 출처

JavaScript - const [내부링크]

JavaScript - const - 이전 글에서 적은 const에 대해 보완하고자 작성한 글이다. const란 - 블록 범위(우리가 흔히 쓰는 &#x27;{ }&#x27;의 안쪽 범위를 의미)의 상수를 선언하는 선언자로, 상수값은 재할당 할 수 없으며 다시 선언할 수 없다. const 예제 - 위에서 봤듯이 블록범위에서 let으로 const 변수가 아닌 걸로 선언한다. - 하지만, 블록 범위가 끝나면 처음에 const로 설정한 값으로 존재한다. - const로 생성한 오브젝트 키, 배열에 아이템을 삽입하는 방식은 가능하다. * 출처

MSSQL - COMMENT 작성 [내부링크]

MSSQL - COMMENT 작성 - MSSQL에서 COMMENT 작성법을 다루는 글이다. COMMENT 작성 table comment 작성 column comment 작성

자바 알고리즘 - 8퀸 문제 [내부링크]

자바 알고리즘 - 8퀸 문제 - 체스판의 퀸이 8개인 조건에서 서로 잡을 수 없도록 배치하는 문제이다. 8퀸 문제

자바 알고리즘 - 버블 정렬 [내부링크]

자바 알고리즘 - 버블 정렬 - 인접한 두 원소를 검사하여 정렬하는 방식으로 배열의 n-1, n번째 요소를 비교하며 작은 값은 n-1로, 큰 값은 n번째로 정렬하는 방식이다. - 만약 끝까지 도달 했을 경우 끝의 요소값이 정해진 다음, 처음부터 해당 끝 위치 전 요소까지 다시 정렬한다.(처음부터 끝까지 실행한 다음 다시 처음부터 정렬 마지막 요소 전까지의 정렬을 실행한다.) 버블 정렬 1. 버블 정렬을 할 배열(arr)을 매개변수로 받는다. 2. 0부터 매개변수 길이만큼 for문을 실행한다. 3. 2의 for문 안에서 1부터 매개변수 길이만큼 for문(비교대상 for문)을 실행한다. 4. 비교대상 2에서 arr의 n-1번째와 n번째의 요소를 비교하면서 정렬한다.......

자바 알고리즘 - 선택 정렬 [내부링크]

자바 알고리즘 - 선택 정렬 - 제자리 정렬 알고리즘의 하나로, 버블 정렬에서 조금 더 간소화한 정렬방식이다. 선택 정렬 실행 순서 1. 정렬 대상에서 최소값을 찾는다. 2. 최소값을 맨 앞의 위치한 값과 교체한다. 3. 교체한 위치 다음을 처음으로 정렬 대상의 맨 끝까지 1,2번의 내용을 다시 수행 선택 정렬 예시 * 출처

자바 알고리즘 - 삽입 정렬 [내부링크]

자바 알고리즘 - 삽입 정렬 - 정렬 대상의 모든 요소를 앞에서 차례대로 정렬된 값과 비교하면서 자기 위치를 찾아 삽입하며 정렬한다. - 해당 알고리즘은 정렬 대상의 크기가 클 수록 효율이 떨어지지만, 구현이 간단하며 선택 / 거품 정렬 알고리즘에 비교했을 경우 빠르며 안정적이다. 삽입 정렬 * 출처

자바 알고리즘 - 셸 정렬 [내부링크]

자바 알고리즘 - 셸 정렬 - 가장 오래된 정렬 알고리즘 중 하나로 삽입 정렬의 개선판이라고 할 수 있다. 셸 정렬 실행 순서 1. 데이터를 십 수개 정도 나눠서 삽입 정렬한다. 2. 1번 내용에서 다시 나눠서 삽입 정렬한다. 3. 2번을 계속 반복하여 한 줄로 마지막 정렬한다. 셸 정렬 예시 * 출처

MSSQL - 삽입한 ID값 반환 함수(@@IDENTITY, SCOPE_IDENTITY, IDENT_CURRENT) [내부링크]

MSSQL - 삽입한 ID값 반환 함수(@@IDENTITY, SCOPE_IDENTITY, IDENT_CURRENT) - 테이블에 데이터 입력 시 삽입한 ID를 반환하는 방식으로 사용한다. MSSQL - 삽입한 ID값 반환 함수 @@IDENTITY 예제 - @@IDENTITY은 대상 컬럼에 반드시 @@IDENTITY가 선언되어 있어야 한다. * 출처

자바 알고리즘 - 퀵 정렬 [내부링크]

자바 알고리즘 - 퀵 정렬 - 다른 원소와 비교만으로 정렬을 수행하는 방식이다. - 분할 정복 방법을 이용한 정렬 방식이다. 퀵 정렬 실행 순서 1. 정렬 리스트에서 하나의 원소를 고르는데, 해당 원소를 피벗이라 한다. 2. 피벗 앞에 피벗보다 작은 모든 원소들, 뒤에는 큰 모든 원소들을 오게 한 뒤, 피벗을 기준으로 리스트를 둘로 나눈 다음, 피벗은 더이상 움직이지 않는다. 3. 1,2번을 반복 수행하여 리스트의 크기가 0이나 1이 될 때까지 반복한다. 퀵 정렬 예제 * 출처

자바 알고리즘 - 피벗 [내부링크]

자바 알고리즘 - 피벗 - 피벗이란 선형대수학에서 특정 계산을 수행하기 위한 임의 알고리즘에 의해 먼저 선택된 행렬의 성분을 의미한다. - 자바에서 피벗은 리스트 또는 배열 정렬 시 유용한데, 피벗이란 기준값을 두고 왼쪽엔 기준값보다 작은 값을, 오른쪽에는 기준값보다 큰 값을 배치한 뒤, 배치한 리스트 또는 배열에서 또 다시 피벗을 설정하여 해당 리스트, 배열의 길이가 0 또는 1이 되도록 사용한다. * 출처

MSSQL - 시간 포맷 [내부링크]

MSSQL - 시간 포맷 * 출처

MSSQL - CONVERT, CAST [내부링크]

MSSQL - CONVERT, CAST - MSSQL 에서 데이터 변환할 때 사용하는 함수 CONVERT, CAST 사용법 * 출처

MSSQL - 특정 문자 유무 확인 [내부링크]

MSSQL - 특정 문자 유무 확인 - MSSQL에서 CHARINDEX를 이용하여 문자를 찾을 수 있다. CHARINDEX 사용법 - 대상문자열에 찾을 문자가 있으면, 해당 위치를 출력하는데, 0보다 작은 값이 나오므로 이런 점을 이용하여 문자를 찾는다. * 출처

Kotlin - 객체 지향 프로그래밍 용어 [내부링크]

Kotlin - 객체 지향 프로그래밍 용어 - 간단히 객체 지향 프로그래밍에서 사용하는 용어를 다루는 글이다. 객체 지향 프로그래밍 용어 * 출처

자바 기초 57 - clone() 복사 기능 [내부링크]

자바 기초 57 - clone() 복사 기능 - 자바 API에는 clone()를 통해 해당 오브젝트를 복사할 방법이 있다. clone() 예시 - clone()은 Object 클래스에서 제공하지만 무조건 복사 기능을 수행하면 문제(무분별한 복사로 독립성 문제가 발생하며 메모리 할당 및 독립성을 가지는 깊은 복사가 아닌 얕은 복사 기능을 수행)가 발생할 수 있다. - clone()의 대상은 반드시 Cloneable 인터페이스를 구현하여 Object.clone()이 가능하다는 것을 증명하기 위해 대상 클래스에서 Cloneable 인터페이스를 구현하여 CloneNotSupportedException 예외 발생을 막는다. - 또한, Cloneable 인터페이스 구현 시 반드시 재정의해야 하는데, 재정의를 안 할경우 구현.......

자바 기초 58 - 접근제한자 사용 대상 [내부링크]

자바 기초 58 - 접근제한자 사용 대상 - 자바의 접근제한자 사용 대상을 다룬 글이다. 접근제한자 사용 대상

자바 알고리즘 - 기수 변환 [내부링크]

자바 알고리즘 - 기수 변환 - 기수란 수를 세는데 기준이 되는 수를 의미한다. - 흔히 사용하는 기수로는 10진수가 있고, IT에서 2진수와 8진수 16진수를 들어봤을 것이다. 기수 변환 - 위와 같이 conversion이란 메서드를 이용하여 정수 x를 r진수로 변환할 값의 각 자리의 문자를 char형 배열 d에 넣어두고 해당 자릿수를 반환하는 메서드이다. - 한자리로 표현할 수 있는 수는 1부터 9까지 존재하기 때문에 10부터 알파벳이 적용되는데, A~Z까지 사용할 경우 35까지 표현할 수 있다. - 그런 의미에서 conversion 메서드는 10진수 값을 원하는 2~ 36진수에 맞춰 변환할 수 있다. - 진수 변환 시 값은 차례대로 떨어지기 때문에 for문을 이용하.......

자바 알고리즘 - 선형 검색 [내부링크]

자바 알고리즘 - 선형 검색 - 선형 검색이란, 일렬로 된 배열을 좌측에서 오른순으로 차례대로 탐색하는 방법이다. - 시간 복잡도 : O(N) 선형 검색 - 먼저 검색할 내용을 담을 배열을 정해둔 뒤, 배열 안에 입력값이 있는지 확인한다. - 만약 있을 경우 해당 값을 반환하지만, 없을 경우 -1을 반환하여 존재 유무를 확인한다.

자바 알고리즘 - 보초법 [내부링크]

자바 알고리즘 - 보초법 - 처음부터 끝까지 검색 내용을 찾는 방법인 선형검색은 높은 검사비용이 필요한데, 이를 줄인 방법이 보초법이다. - 선형검색에 알고 싶다면, 아래글을 참조하세요. 보초법이란? * 선형 검색의 조건은 아래와 같다. 1. 검색할 대상에서 검색 값과 같은 요소를 찾는 경우 2. 검색 값과 같은 요소를 찾지 못하면 값을 찾지 못하고 배열의 끝을 지나갈 경우 - 2의 경우를 대비하여 만들어진 것이 보초법으로, 검색 전 배열의 끝 부분에 검색값을 요소로 넣어, 검색 시 배열의 끝을 지나가지 않게 하는 방식이다. 보초법 예시

자바 알고리즘 - 이진검색 [내부링크]

자바 알고리즘 - 이진검색 - 이전의 선형 검색과 달리, 이미 정렬된 데이터에서 키로 검색하는 방법 중 하나로, 선형검색보다 빠른 검색이다. 이진검색 방식 1. 검색대상인 배열은 무조건 순차적이여야 한다.(오름차순 또는 내림차순 형식) 2. 검색 시 배열의 절반에서 검색값과 비교하여 일치 여부를 확인한다. 3. 불일치 할 경우 검색 값이 비교 값보다 큰 값이거나 작은 값인지 확인한다. 4. 큰 경우 절반부터 맨 끝, 작은 경우 절반에서 맨 앞까지 값을 검색대상으로 변경한다. 5. 2번부터 4번의 방식을 다시 실행한다. 이진검색 예제

자바 알고리즘 - 해싱 탐색 [내부링크]

자바 알고리즘 - 해싱 탐색 - 특정 계산으로 자료 저장 주소를 알아내는 탐색 방법이다. - 해싱 탐색은 주어진 키 값을 갖는 레코드를 반복적인 비교를 통해 찾는 것이 아닌, 함수로 산출한 주소로 저장 위치에 바로 접근 가능한만큼 모든 원소에 대해 접근 시간이 동일하다.(효율은 그렇게 좋진 않다.) - 키 값과 함수로 산출된 주소를 구해 저장 위치를 구하는 만큼, 주소를 담은 테이블이 존재하며 한 영역엔 반드시 하나의 데이터만 존재해야한다. - 만약, 해쉬 충돌(같은 위치에 2개의 다른 값이 존재)이 발생하면 이미 할당된 해쉬값 위치의 다음 빈 위치에 할당하는 방법으로 해결할 수 있다. * 출처

자바 알고리즘 - 자연 정렬과 문자열 정렬의 차이 [내부링크]

자바 알고리즘 - 자연 정렬과 문자열 정렬의 차이 - 자연 정렬이란, 숫자 부분의 순서를 자연스럽게 맞춰주는 정렬으로, 일반적인 문자열 정렬과 차이가 있다. - 자연 정렬은 Array.binarySearch(Object[] a, Object key)를 이용하여 해당 키에 맞춰 정렬할 순서를 가린다. - 문자열 정렬은 Array.sort(Object[] a) 를 이용하여 요소에 숫자가 들어가 있어도 값은 무조건 문자열로 인식하여 문자열로 정렬한다. - 문자열 정렬 시 문자열 길이로 정렬하고 싶을 경우 Comparable&#60;T&#62; 인터페이스의 compareTo 메서드를 직접 구현해야한다. 자연 정렬과 문자열 정렬의 차이 - 문자열 정렬은 숫자를 숫자로 보지 않고 문자 기준으로 정렬한다. - .......

웹 애플리케이션 - 톰캣 서비스 중지하는 중 해결 방법 [내부링크]

웹 애플리케이션 - 톰캣 서비스 중지하는 중 해결 방법 - tomcat의 서비스를 다시 시작할 경우 가끔 중지하는 중으로 뜨되, 서비스 상태를 변경하지 못할경우가 있다. 톰캣 서비스 중지하는 중 해결 방법 1. cmd창을 킨다. 2. cmd창에 아래 내용을 순서대로 입력한다. - tasklist를 쓸 경우 현 서비스들의 pid번호를 확인 할 수 있다. 이 때 톰캣의 pid번호를 확인한다. - 그 이후 taskkill /f /pid 명령어 다음 tomcat의 pid번호를 입력하면 해당 서비스가 강제 중지 된다.

자바 알고리즘 - 유클리드 호제법 [내부링크]

자바 알고리즘 - 유클리드 호제법 - 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘을 얘기한다. - 2개의 자연수(a: b보다 큰 수, b:자연수)와 a를 b로 나눈 나머지를 r이라고 하면 a와 b의 최대공약수는 b와 r의 최대 공약수와 같은데, b를 r로 나눈 나머지 r2와 r을 r2로 나눈 나머지를 구하는 방법을 반복하여 나머지가 0이 되었을 때 나오는 값이 a와 b의 최대공약수이며 이를 구하는 방법이다. 유클리드 호제법 * 출처

자바 알고리즘 - 하노이의 탑 [내부링크]

자바 알고리즘 - 하노이의 탑 - 하노이의 탑이란 세개의 기둥을 가지고 1번째 기둥에 꽃힌 각기 다른 크기의 원반을 3번째 기둥으로 이동횟수가 가장 적은 방식으로 옮겨 꽃는 걸 말한다. - 특징은 다음과 같다. 1. 모든 원반의 크기는 다르다. 2. 작은 원반이 위에, 큰 원반이 아래에 위치해야한다. 3. 원반은 반드시 1개씩만 옮길 수 있다. 하노이의 탑 - 기둥이 3개이기 때문에 기둥 번호를 1,2,3으로 하고 원반수(n)를 입력 * 출처

Kotlin - 세이프 콜과 단정기호 [내부링크]

Kotlin - 세이프 콜과 단정기호 - 세이프 콜과 단정기호에 대해 알아보자 세이프 콜 - 변수 뒤에 ?.를 사용하여 null에 대해 방지하는 방식으로 사용한다. - 앞의 변수가 null이 사용 가능한 자료형일 때 변수값이 null일 경우 뒤의 length가 미실행되도록 해준다. - 결국, ${str?.length}는 ${str}로 처리가 되는 셈이다. not-null 단정기호 - 변수 뒤에 !!.를 붙여서 사용해서 null이 아니라고 단정하는 기호이다. - 만약 실행 시 !!. 기호 앞의 변수가 null일 경우 null로 인해 예외가 발생한다.

Kotlin - if문 [내부링크]

Kotlin - if문 - 코틀린에서도 조건에 따라 실행할 수 있는데 사용되는 문법이다. - 코틀린에서의 if문은 다른 프로그래밍 언어보다 더욱 더 간략화하여 사용한다. if문 - if문은 조건과 조건을 제외한 경우에 맞춰서 실행 할 수 있다. - 코틀린에서는 in연산자와 ..를 사용하여 범위를 지정할 수 있다.

Kotlin - when [내부링크]

Kotlin - when - when을 통해 다양한 조건으로 실행 할 수 있다. when - when()에 인자값을 작성 또는 미작성 한 다음 사용할 수 있다. - 만약 인자값을 미작성 할 경우 조건에 맞추기 위해 밖의 변수를 사용하는 방법이 있다. - 변수의 타입이 정해지지 않았을 경우 변수의 타입을 Any로 설정하자

Kotlin - for문 [내부링크]

Kotlin - for문 - 코틀린에서 반복 실행하는 명령문중 하나이다. - 선언한 변수와 해당 변수의 조건을 준 뒤, 변수값을 증감시켜 조건이 충족될때까지 반복 실행한다. for문 예시 1(일반 작성) - for문 안에 작성한 변수의 값이 in 다음 컬렉션 또는 범위에 맞춰 반복한다. - 만약, 증가하는 것이 아닌 아래로 감소하는 경우 큰 값과 작은 값 사이에 downTo키워드를 작성하여 실행시킨다. for문 예시 2(반복 변수값의 간격을 벌릴 경우) - 기존 for문 조건 작성뒤에 step 키워드로 증감값을 작성하여 간격이 무조건 1이 아닌 2이상의 값을 늘리거나 줄일수 있다.

Kotlin - 의사 코드(Pseudo-code) [내부링크]

Kotlin - 의사 코드(Pseudo-code) - 프로그래밍 언어가 아닌, 우리말로 프로그램의 수행 내용을 간략히 서술한 코드 - 우리 말로 수행 내용을 작성한 만큼 좀 더 직관적이다. 의사 코드(Pseudo-code) 예제(*로 삼각형 출력) - 반복문의 전체 줄 수만큼 반복하여 논리적인 사고를 좀 더 명확히 할 수 있다.

Kotlin - while문, do-while문 [내부링크]

Kotlin - while문, do-while문 - 코틀린에서 제공하는 반복문 중 하나로, 조건식에 맞춰 반복 실행을 한다. while문 작성법 - 위와 같이 while()의 조건식에 맞춰 안의 내용이 실행되는데, 반복 실행할 내용에 조건식이 false로 되는 내용을 안 적으면, 무한 루프(반복)이 발생한다. do-while문 작성법 - 일반 while문과 달리, 앞에 do{ 반복 실행 내용}이 붙는데, 이 내용은 조건식과 상관없이 반드시 반복 실행 내용을 한번 실행하는 문법이다. - do-while문도 반복 실행 내용에 조건식이 false로 되는 내용을 적지 않으면, 무한 루프(반복)이 발생한다.

Kotlin - return [내부링크]

Kotlin - return - 조건 또는 반복문 실행 시 값을 반환할 때 사용하는 키워드이다. return 작성법 - return 키워드는 해당 함수에서 값을 반환할 때 사용하는데, 해당 키워드로 인해 return이후의 내용은 실행되지 않는다. - 만약 특정 자료형을 반환하지 않는 Unit 자료형일 경우 return을 생략할 수 있다. - 그냥 return문 자체를 생략하는 것도 가능하다. - return 키워드는 해당 함수에서 값을 반환할 때 사용하는데, 해당 키워드로 인해 return이후의 내용은 실행되지 않는다. return을 생략한 람다식, 익명함수를 함수에 할당한 경우 - return 생략하고 내용을 가진 람다식 또는 익명 함수를 함수에 할당할 때 해당 익명 함수가 함수에 할.......

Kotlin - break, continue [내부링크]

Kotlin - break, continue - 주로 조건 또는 반복문 실행 시 사용하는 키워드이다. break 예시 - break : 특정 지점에서 반복을 중단하는 키워드 - i가 5일 경우 반복문이 끝난다. label을 이용한 break - i : 1 j : 2일때 @first 라벨에 break 키워드를 실행하여 한줄만 출력된다. continue 예시 - continue : 반복문의 특정 지점에서 내려가지 않고 위에서 시작하는 키워드 label을 이용한 continue - j : 2일때 @first 라벨에 continue 키워드를 실행하여 첫번째 for문으로 이동되어 i가 증가한 값으로 다시 실행된다.

Kotlin - 예외 처리 [내부링크]

Kotlin - 예외 처리 - 프로그램 실행 시 실행 의도와 다른 데이터로 인해 작동하지 못하고 멈추는 경우가 발생하는데, 이를 확인하기 위해 사용하는 방법이다. 예외 처리 상황 1. 잘못된 시스템 호출로 인해 발생하는 문제 2. 연산할 수 없는 값의 문제(무한에 가까운 값들) 3. 실행 시 메모리 부족 또는 할당 실패 4. 입력형식이나 입력 값이 없는 경우 문제 5. 실행 기기의 문제 예외처리 예제(try-catch-finally) - try문은 실행 시 예외가 발생하면 중단하는 영역이다. - catch문의 매개변수에 예외처리 유형을 작성한 뒤 해당 예외에 맞춰 처리한다. - finally문은 위와 상관없이 반드시 실행하는 영역이다.(생략해도 상관없다) 예외처리 내.......

Kotlin - 지연 초기화(lateinit, lazy) [내부링크]

Kotlin - 지연 초기화(lateinit, lazy) - 전역 변수로 선언할 때, 초기화를 나중에 하기 위해 null값으로 지정한 뒤, 사용하는 시점에서 초기화를 하는 경우가 있는데 이를 lateinit과 그 반대의 lazy 키워드를 사용하여 초기화를 한다. lateinit 사용 방법 - initlate 키워드는 반드시 var 키워드를 사용하여 선언한 경우에만 사용가능하다.(val, primitive type 사용 불가) * 여기서 primitive type은 byte,int, Double 등의 코틀린 제공 기본 타입을 의미한다. - getter/setter를 정의할 수 없다. lazy 사용 방법 - lazy 키워드는 lateinit과 반대의 조건을 갖추는데.. 기존 val 변수 선언 시 by lazy를 추가하여 변수를 선언과 초기화를 동시.......

Kotlin - tailrec(꼬리재귀함수) [내부링크]

Kotlin - tailrec(꼬리재귀함수) - 재귀란 자신을 다시 참조하는 방법으로 프로그래밍 언어에선 보통 재귀함수를 사용하여, 일정 값에 도달할 때까지 자기 자신 참조를 하는 방식에 쓰는데, 만약 그렇지 않다면 무한 호출로 인해 스택 오버플로우가 발생한다. - 코틀린에서는 tailrec 키워드를 사용하여 무한 호출을 벗어나는 방법을 구현할 수 있다. tailrec(꼬리재귀함수) 작성법 - 일반적인 재귀함수는 실행 할 때 마다 계속해서 자기 자신을 호출하기 떄문에, 반복되는 횟수가 높을 수록 메모리 부담감이 심한데, 꼬리재귀함수를 사용하면, 재귀 함수 사용 시 계산을 먼저 한 다음, 자기 자신을 호출하기 떄문에 메모리 사용에 적합하다.

Kotlin - 함수형 프로그래밍 [내부링크]

Kotlin - 함수형 프로그래밍 - 보통 프로그래밍을 배우면서 객체 지향 / 절차 지향 프로그래밍을 들은 적이 있는데, 함수형 프로그래밍을 알게되어 작성한 글이다. 함수형 프로그래밍의 특징 1. 순수 함수로 같은 인자에 대해 항상 같은 값을 반환하며, 외부에 영향을 미치지 않을 수 있다. 2. 함수를 일급객체(:&#x3D;일급 함수)로 생각하여, 함수의 인자를 전달하거나 반환값에 사용되거나 변수에 담을 수 있는등,, 다양한 방식의 함수형 프로그래밍이 가능하다. 3. 일급객체인 함수로 고차함수와 람다식을 사용할 수 있다. 4. 간단히 이해하자면, 함수 참조하여 변수로 사용한 방식으로 간결하고 효율적이고 보다 안전한 프로그래밍을 할 수 있.......

Kotlin - 확장 함수 [내부링크]

Kotlin - 확장 함수 - Any 클래스를 이용하여 특정 대상 클래스에 함수를 추가할 수 있는 방법이다. 확장 함수 예시 - 위와 같이 Example이란 클래스가 있다고 할 때, 확장함수를 통해 Example 클래스에 printFunctionType(i : Int)함수를 새로운 멤버 메서드로 추가한 것으로 기존 표준 라이브러리를 수정할 필요 없이 확장할 수 있는 방법 - 만약, 확장함수와 동일한 멤버함수 혹은 메서드가 존재 시 확장 함수보다 멤버 함수 혹은 메서드가 먼저 실행된다. * 출처

Kotlin - 중위 함수 [내부링크]

Kotlin - 중위 함수 - 함수 뒤에 소괄호를 붙이지 않고 직관적인 이름을 사용하는 중위 표현법을 사용한 함수로 일종의 연산자를 구현할 수 있는 함수를 의미한다. 중위 함수의 조건 1. infix 키워드를 fun앞에 사용하여 정의한다. 2. 일종의 연산자를 구현할 수 있는 함수인만큼 하나의 매개변수를 가져야한다. 3. 멤버 메서드나 확장 함수여야 한다. 중위 함수 예시 - 위의 multiply()함수에 infix 키워드를 작성하여 중위 함수를 정의하고 매개변수를 넣고, 함수를 확장한 형태이다.

Vue.js - 커스텀 이벤트 [내부링크]

Vue.js - 커스텀 이벤트 - props의 반대로 하위 컴포넌트의 이벤트를 부모 컴포넌트로 전달할 수 있다. - 하위 컴포넌트에 커스텀 이벤트를 주면 상위 컴포넌트에서도 사용할 수 있는 게 장점이다. - v-model의 lovingVue의 값은 checked prop으로 전달되며, $emit을 통해 change이벤트가 적용될때마다 checked값이 업데이트된다. - 하위 컴포넌트인 childComponent에서 sendEvent() 메서드가 실행 시 update이벤트가 발생되면서 상위 컴포넌트인 루트 컴포넌트의 v-on 디렉티브로 update 이벤트를 받아서 showAlert() 메서드를 실행한다. * 출처

Vue.js - .sync 수식어 [내부링크]

Vue.js - .sync 수식어 - 양방향 바인딩이 유지보수에서 중요한 만큼 자식 속성을 변경하는 경우, 부모 속성에 영향을 미치기에, .sync는 2.0버전에서 삭제됬지만, 재사용 가능한 컴포넌트를 만들 때 유효한 기능이 있으며, 부모 상태에 영향을 미치는 만큼 코드를 일관적이고 명백하게 만들어야 하기 위해 다시 만들어진 기능이다. - vue의 2.3.0+에서 추가된 수식어로 prop에서 양방향 바인딩이 필요한 경우에서 자식 컴포넌트가 변이 코드 없이 부모 컴포넌트를 변경할 수 있게 될 경우 사용한다. .sync 수식어 사용 방식 - v-bind와 .sync 수식어는 표현식과 함께 동작하지 않는다. (표현식 &#62; v-bind:title.sync&#x3D;&#34;doc.title + &.......

Vue.js - Slots [내부링크]

Vue.js - Slots - 부모 컴포넌트에서 자식 컴포넌트에게 slot을 이용해 템플릿을 전달하는 컨텐츠 배포 방법이다. - 현재 2021.11.28 slot과 slot-scope는 Vue 3버전에서 공식적으로 삭제된다고 하기 때문에 대체 디렉티브인 v-slot을 써주자 Slots 기본 - slot을 이용하여 컴포넌트 렌더링 시 컨텐츠 배포를 할 수 있다. 이름 있는 Slots - 2.6.0+에서 업데이트된 기능으로 기존 슬롯에 이름을 적용 (slot &#62; v-slot) 방식 - template에 v-slot:name 을 이용하여 렌더링 이후 slot을 적용하는 방법이다. - 만약 v-slot을 쓴 template으로 싸여있지 않은 내용은 template v-slot:default 슬롯에 해당하는 것으로 간주되기 때문에 1번과 2번의 작.......

Vue.js - keep-alive 동적 컴포넌트 [내부링크]

Vue.js - keep-alive 동적 컴포넌트 - vue의 초기 버전에선 탭 인터페이스에서 컴포넌트를 전환 시 is특성을 사용하여 컴포넌트를 전환했었다. - keep-alive는 컴포넌트를 전환 할 때 재 렌더링을 할 수 밖에 없는 경우 동적 컴포넌트를 재생성하는데, 이를 해결하는 방법이다. - component를 keep-alive로 감싸서 탭 인터페이스에서 컴포넌트 전환 시 상태를 유지할 수 있을 뿐만 아니라 재 렌더링 하지 않는다. * 출처

Vue.js - 비동기 컴포넌트 [내부링크]

Vue.js - 비동기 컴포넌트 - 애플리케이션의 용량이 큰 경우, 앱을 나눠 필요한 경우에 서버로부터 컴포넌트를 로드해야 할 수 있는데, vue에선 팩토리 함수를 이용해 컴포넌트를 비동기적으로 정의할 수 있다. - 위의 팩토리함수는 function(resolve, reject){ .... }를 의미하는데, 해당 함수는 resolve란 서버에 컴포넌트 정의를 했을 때 호출되는 내용과 reject(reason)을 사용하여 로딩이 실패한 경우에 대응할 수 있다. - 웹팩이 Ajax를 통해 로드한 번들들을 이용해 코드를 자동으로 분할하는 require문법이다. * 웹팩 내용 참조 - 또한 팩토리 함수에서 Promise를 반환할 수 있다고 한다. - local registration(지역 등록)을 이용하면 pr.......

JavaScript - 화면 인쇄하기 [내부링크]

JavaScript - 화면 인쇄하기 - window객체의 print()를 사용해서 화면을 인쇄할 수 있다. - window객체는 전역 객체(최상위 객체)로 print 메서드를 이용해서 화면을 인쇄할 수 있다. 화면 인쇄 방법 - window객체의 print()는 document의 body를 인쇄한다. - javascript가 아닌 html문서에서 작성 시 body 태그의 onload속성에 &#34;window.print();&#34;를 적어주면 적용할 수 있다. 적용 가능한 브라우저 * 출처

JavaScript - 팝업 인쇄 선택 후 닫기 [내부링크]

JavaScript - 팝업 인쇄 선택 후 닫기 - 이전 글인 화면 인쇄하기에 이어진 글이다.(화면 인쇄하는 방법 하단 참조) - 팝업 내용을 인쇄 시 프린트 이전/이후 시점에서 선택 이후 팝업을 닫을 수 있다. 팝업 인쇄 선택 후 닫는 방법 Internet Explore와 firefox 브라우저만 적용되는 이벤트 - 위의 내용은 Internet Explore와 firefox 브라우저만 적용 되는 이벤트인데, Chrome과 Opera 등의 브라우저에서는 해당 이벤트 처리가 불가능하다. - 그래서 window객체의 matchMedia(&#x27;print&#x27;)를 이용해서 해당 이벤트를 적용할 수 있도록 한다. 다른 브라우저까지 적용되는 이벤트 1. window객체 인쇄 beforePrint()와 window객체를 닫는 aft.......

Vue.js - 엘리먼트 & 컴포넌트 접근 [내부링크]

Vue.js - 엘리먼트 &#38; 컴포넌트 접근 - vue에선 다른 컴포넌트와 DOM 엘리먼트에 직접 접근하는걸 피하는 것이 좋지만, 접근이 허용되는 경우가 있다. 루트 엘리먼트 접근 - 일반적인 작은 크기의 어플리케이션이나 적은 수의 컴포넌트에서 접근 방식에서는 유용하지만, 크기가 커지거나 많아질 경우 Vuex란 상태관리 라이브러리를 사용하는 것이 유용하다. * Vuex 다운로드 * Vuex 가이드 컴포넌트 인스턴스 접근 * 부모 컴포넌트 인스턴스에 접근하는 경우 - $root와 비슷하게 $parent속성을 이용하여 자식 요소에서 부모 인스턴스에 접근할 수 있다. - 이 방식은 컴포넌트간의 공유가 이뤄져야하는 라이브러리(예: 구글 Maps 컴포넌트)에서.......

Vue.js - 의존성 주입 [내부링크]

Vue.js - 의존성 주입 - 이전 글에서 부모 컴포넌트 인스턴스에서 접근한 글을 적은 적이 있는데, 어플리케이션의 크기가 커지고 컴포넌트 수가 많아지면서 중첩된 컴포넌트에서의 $parent 속성은 확장 가능한 방법이 아니라고 한다. - 이런 경우 $parent 대신 provide와 inject 옵션을 통해 의존성 주입을 사용하여, 중첩 컴포넌트에서 $parent 기능을 수행한다. 의존성 주입 - provide 옵션은 모든 하위 자식들에게 제공하고자 하는 data 및 methods를 특정할 수 있게 해주는데, google-map 컴포넌트의 getMap내용을 적용할 수 있다. - $parent와 달리 부모 컴포넌트 인스턴스의 모든 요소에 접근하지 않아도 getMap 메소드에 접근 할 수 있다.......

Vue.js - 프로그래밍적 이벤트 리스너 [내부링크]

Vue.js - 프로그래밍적 이벤트 리스너 - Vue 인스턴스에서 이벤트 인터페이스를 사용 할 수 있는데, 이를 다뤄보는 글이다. 프로그래밍적 이벤트 리스너 - 라이프사이클 훅(Vue 인스턴스 생성 시 가장 먼저 호출되는 함수들)에서만 picker에서 접근 할 수 있는 경우, picker가 컴포넌트 인스턴스 안에 저장되어야 하는점 - 설정 / 제거 코드가 분리되어 있기 때문에 유지보수하기 어렵다. - $once를 이용하여 단발성 이벤트인 beforeDestroy를 실행 시켜 컴포넌트를 destroy하기 직전에 datapicker를 destory할 수 있도록 하는 방식이다. * 출처

Vue.js - 조건부 렌더링(v-if, v-show) [내부링크]

Vue.js - 조건부 렌더링(v-if, v-show) - 조건이 true일 경우 블록을 렌더링하는 v-if, v-show 디렉티브이다. 조건부 렌더링(v-if, v-show) 예시 - v-if 디렉티브 같은 경우 두번째 조건을 줄 경우 v-else-if를 쓴다.(Vue.js 2.1.0+부터 추가된 기능이다.) - v-if 디렉티브에서 조건이 아닐 경우 v-else를 쓰며 v-else는 v-if와 v-else-if 뒤에 나와야 한다. * 결과 - 조건을 준 뒤, 해당 조건이 true일 경우 실행된다. * 출처

vue.js - 리스트 렌더링(v-for) [내부링크]

vue.js - 리스트 렌더링(v-for) - vue.js에서 반복적인 데이터를 렌더링할 때 v-for를 사용한다. - 특히, v-for는 배열을 기반으로 데이터를 렌더링하는데, item(반복되는 배열 엘리먼트) in items(실제 사용 데이터 배열) 형태의 문법을 띈다. 리스트 렌더링(v-for) 예제 * 결과 - array1이란 배열에서 v-for을 이용하여 값을 꺼내쓸 수 있다. * 출처

Vue.js - component Props option [내부링크]

Vue.js - component Props option - 모든 컴포넌트 인스턴스의 하위 컴포넌트 템플릿에 상위 데이터를 직접 참조할 수 없고 하면 안되지만, props 옵션을 이용하여 데이터를 전달할 수 있다. * 출처

JQuery - closest()을 이용한 tr 위치 확인 [내부링크]

JQuery - closest()을 이용한 tr 위치 확인 - table에서 tr 태그 안의 element를 클릭했을 때 해당 tr의 순번을 필요로 할 때가 있는데, 그걸 다루는 글이다. closest()을 이용한 tr 위치 확인 방법 - a태그를 클릭 시 해당 엘리먼트를 fnTrPlace()의 매개변수에 넣는다. - closest(&#x27;tr&#x27;)를 쓸 경우 가장 가까운 부모 요소에서 tr를 찾는다. - closest(&#x27;tr&#x27;)에서 찾은 tr과 같은 엘리먼트 중 이전 엘리먼트 모두를 찾기 위해 prevAll()의 length를 출력하면 해당 인덱스를 확인 할 수 있다. * 결과 - 1번째 클릭 2번째 클릭

Vue.js - transition [내부링크]

Vue.js - transition - Vue에서 transition을 이용해서 Dom에 애니메이션 효과를 부여할 수 있다. transition효과를 적용한 다양한 방법을 제공하는 도구 1. CSS 트랜지션 및 애니메이션을 위한 클래스를 자동으로 적용합니다. 2. Animate.css와 같은 타사 CSS 애니메이션 라이브러리 통합 3. 트랜지션 훅 중에 JavaScript를 사용하여 DOM을 직접 조작 4. Velocity.js와 같은 써드파티 JavaScript 애니메이션 라이브러리 통합 transition 예제 * 결과 - show1를 클릭 시 사라지거나 보여짐 - show2를 클릭하면 애니메이션 효과 이후 안보이거나 보여진다. - show3를 누르면 표시여부에 따라 status에 표시여부를 표시한다. * 출처

Jquery - label태그 text값 가져오기 [내부링크]

Jquery - label태그 text값 가져오기 - 제이쿼리를 쓰다가 label 태그로 text값을 가져오는 방법을 알게되어 작성한 글이다. label태그 text값 가져오기 * 결과 - label for속성을 이용하여 값을 가져온다.

SQL(MySQL/MariaDB) - Auto Increment [내부링크]

SQL(MySQL/MariaDB) - Auto Increment - MySQL/MariaDB에서 보통 정수값(순번, 인덱스 등)을 자동으로 올려주는 옵션을 의미한다. - insert 시 auto increment 설정된 컬럼은 따로 작성할 필요가 없다. - 기본키에만 해당 옵션이 가능하다. Auto Increment 작성법

Jquery - checkbox checked 속성 변경 [내부링크]

Jquery - checkbox checked 속성 변경 - 일반적으로 체크박스는 페이지 이동 시 checked 속성을 주지 않지만, 이 글은 페이지 로딩 시 속성에 checked를 적용 시 변경하는 방법을 작성하고자 한다. Jquery - checkbox checked 속성 변경 - &#x27;nm&#x27; 이름을 가진 체크박스에서 value가 &#x27;Y&#x27;인 경우 미리 checked란 속성을 준 경우 해당 &#x27;nm&#x27; 태그들의 onclick시 &#x27;fnChkYn&#x27;에 해당 태그만 속성에 체크되도록 설정하는 방법이다.

JQuery - clone()을 이용한 복사 [내부링크]

JQuery - clone()을 이용한 복사 - 제이쿼리에서는 html요소를 복사할 수 있는 clone()을 제공한다. - 이런식으로 복사할 요소의 clone을 변수에 저장한 뒤, 특정 요소에 추가할 수 있다.

Jquery - radio 버튼 클릭 시 checked 속성 변경 [내부링크]

Jquery - radio 버튼 클릭 시 checked 속성 변경 - radio버튼의 속성에서 버튼 클릭으로 check값 변경 시 checked 속성을 바꾸는 방법이다. radio 버튼 클릭 시 checked 속성 변경 방법

Vue.js - Template 문법 [내부링크]

Vue.js - Template 문법 - Vue.js에선 랜더링된 DOM을 Vue 인스턴스의 데이터에 선언으로 바인딩할 수 있는 html기반 템플릿 구문을 사용하는데, 데이터 바인딩의 기본 형태는 &#x27;Mustache&#x27; 구문(이중 중괄호)라고 한다. - 위와 같이 Mustache 구문은 데이터 객체의 msg 속성이 변경될 때마다 갱신이 되는데, 태그에 v-once를 붙여서 데이터 변경 시 업데이트를 막을 수 있다.(이럴 경우 같은 노드의 바인딩에 영향을 준다. - 근데 Mustache 구문은 html이 아닌 일반 텍스트로 데이터를 해석하는데, html로 출력하려면 v-html을 사용해야한다. - Mustache 구문에서 html 속성을 쓸 경우 &#x27;v-bind:속성명&#x27;로 사용된다. v-html, v.......

Vue.js - 속성값 binding 하는 방법 [내부링크]

Vue.js - 속성값 binding 하는 방법 - 이전에 html 태그의 속성을 v-bind를 통해 적용한다고 했는데, 그에 대해 다루는 글이다. v-bind를 이용한 href 속성 설정 * 결과 * link1을 제외한 link2, link3의 결과 - HTML 속성에는 {{}}를 사용할 수 없기때문에 v-bind 디렉티브를 사용한다. - &#x27;:href&#x27;는 &#x27;v-bind:href&#x27;의 약어로 둘다 동일한 문법이다. * 출처

Vue.js - class binding을 이용한 css 적용방법(style binding) [내부링크]

Vue.js - class binding을 이용한 css 적용방법 - 저번엔 속성값을 binding해봤는데, class로도 바인딩이 된다. - style 태그에서 작성한 css 내용을 class 바인딩을 통해 css 적용 방식이다. class binding을 이용한 css 적용방법 * 결과 - 클래스로 주는 방식과 Vue 인스턴스의 data를 &#x27;v-bind:class&#x27;로 주는 방식과 같은걸 볼 수 있다. - v-bind:class를 이용하여 Vue 인스턴스의 data로 원하는 class명으로 변경하면서 동적으로 클래스를 적용할 수 있다. * 출처 https://v3.ko.vuejs.org/guide/class-and-style.html

Vue.js - Inline style binding [내부링크]

Vue.js - Inline style binding - v-bind을 이용한 Inline-style 적용 방법 Inline style binding 방법 * 결과 - &#x27;v-bind:style&#x27;을 이용하여 적용한 방식이다. - &#34;v-bind:style&#x3D;&#x27;{}&#x27; &#34;를 이용하여 여러 data를 적용시킬 수 있다. * 출처

Vue.js - form 입력 바인딩(v-model) [내부링크]

Vue.js - form 입력 바인딩 - Vue에선 form의 &#x27;v-model&#x27;을 사용해서 input, textarea element에 양방형 데이터 바인딩을 생성할 수 있다. - v-model의 특징은 항상 vue 인스턴스 데이터를 default값으로 처리하므로, select element에서 &#x27;v-model&#x27; 표현식의 초기값이 어떤 옵션에도 없으면, 선택없음 상태로 랜더링이 된다. form의 v-model 랜더링 - &#x27;v-model&#x27;을 이용하여 랜더링 시 값을 바인딩할 수 있다. * 결과 * input, textarea 변경 시 - 내용에 맞춰 결과가 나온 걸 알 수 있다. * check box, radio button, select box 변경 시 - 각 선택값에 맞춰 값이 출력된다. * 출처

Vue.js - form 수식어 [내부링크]

Vue.js - form 수식어 - Vue에선 form 내용을 더욱 세밀하게 다루기 위해 form의 수식어가 존재한다. form 수식어 * 결과 - 입력 중(lazy 사용) - 입력 후(lazy 사용) - 입력할 때 원래 바로 되지만 focus가 사라지면 결과가 나온다.(지연 결과) - 11 입력 시(number 사용) - 입력한 건 string 타입의 숫자지만, number로 적용한 경우 타입 체크 시 number로 인식한다. - 공백 적용(trim 사용) - 맨 앞의 공백을 넣어도 focus가 사라지면 맨 앞의 공백이 사라진다.

Vue.js - 클릭 이벤트 [내부링크]

Vue.js - 클릭 이벤트 - 이전에 v-on:click에 대해 조금 다뤘던걸 보충하고자 작성한 글이다. - &#x27;v-on:click&#x27;과 &#x27;@click&#x27;은 똑같은 기능으로 클릭 실행 내용을 적는다. v-on:click과 @click의 예제 * 결과 - 위의 2버튼 둘다 누를 경우 btnEvent란 methods가 동작된다. - &#x27;책&#x27; 이미지를 클릭 했을 경우 imageEvent methods가 동작된다. - data1과 data2의 input tag에 숫자를 적은 뒤 숫자 더하기 버튼을 누르면 두개의 숫자 합이 결과 다음에 나온다.

JavaScript - 변수의 스코프 [내부링크]

JavaScript - 변수의 스코프 - 스코프란 유효 범위를 말하는데, 자바스크립트에서 범위에 따라 구분된다. * 출처

JavaScript - null과 undefined의 차이 [내부링크]

JavaScript - null과 undefined의 차이 - null과 undefined의 차이점을 알게 되면서 작성한 글이다.

JavaScript - Number 객체 [내부링크]

JavaScript - Number 객체 - wrapper 객체로 이름처럼 원시 타입 값을 감싼 형태의 객체다. - 이름에서 볼 수 있듯이 숫자 값을 감싼 객체라고 볼 수 있다. - Number 객체는 Number 생성자 함수를 통해 생성한다. - 만약 new 연산자가 없는 상태로 사용했을 경우 Number 객체가 아닌 원시 타입 숫자를 반환하며, 문자 형태의 숫자를 값으로 넣었을 경우 형변환이 일어난다. - new Number()로 생성된 객체는 타입을 출력해보면 object로 출력되는걸 알 수 있다. - Number란 객체가 있기때문에 &#x27;Number.프로퍼티명&#x27;을 이용하여 해당 Number의 속성값을 도출할 수 있다. Number의 프로퍼티(속성) Number의 메서드(함수) * 출처

JavaScript - 화살표 함수 [내부링크]

JavaScript - 화살표 함수 - ES6에서 나온 함수로, ES6이상부터 쓸 수 있다. - 기존 함수의 function 키워드를 통해 만든 함수를 더 간단히 표현하기 위해 만들어진 함수이며 익명 함수이다. 화살표 함수 제한점 1. this, super에 대한 바인딩과 methods로 사용할 수 없다. 2. new.target 키워드가 없다 3. 일반적으로 스코프를 지정할 때 사용하는 call, apply, bind methods를 이용할 수 없다. 4. 생성자로 사용할 수 없다. 5. yield(비동기 처리에 사용하는 키워드)를 화살표 함수 내부에서 사용할 수 없다. 화살표 함수 예제 * 출처

JavaScript - Generator function [내부링크]

JavaScript - Generator function - 일반 함수와 달리, 사용법에 따라 여러 값을 반환하는 함수 - function*으로 시작하며, 안에 yield 키워드를 사용하여 호출방식에 따라 값을 반환한다. Generator 객체의 method * 출처

SQL(ORACLE 기준) - 특정 테이블 데이터 복원 [내부링크]

SQL(ORACLE 기준) - 특정 테이블 데이터 복원 - DBeaver tool을 쓰며 auto commit 기능을 맞춰서 DB를 다루다가 commit 후에 rollback으로 원하는 데이터를 복원하지 못해서 알게 된 방법이다. - 현재 시간과의 차이를 사이로 두고 복구하는 방식이다. - INTERVAL 이후에 시간을 작성하면 차이났던 시간에 있었던 데이터를 다시 되돌릴 수 있다. - 해당 시간은 MINUTE뿐만 아니라 HOUR도 가능하다.

JSP / Servlet - 엑셀파일 생성 시 셀 서식 지정 [내부링크]

JSP / Servlet - 엑셀파일 생성 시 셀 서식 지정 - jsp로 엑셀파일 구현 시 셀 서식을 변경할 수 있는 방법이다. 엑셀파일 생성 시 셀 서식 지정

SQL(MySQL/MariaDB) - MD5 FUNCTION [내부링크]

SQL(MySQL/MariaDB) - MD5 FUNCTION - 단방향 암호화 알고리즘을 이용한 함수로 MD5()에 임의의 값을 넣어서 128비트의 해시값을 출력하는 보안 방식이다. - 이 방식은 주로 패스워드 암호화에 대해 사용하는데... 2006년 이후에는 SHA 계열 해시 함수로 대체되고 있다. - 위와 같이 MD5() 안에 임의의 문자열을 넣었을 경우 랜덤값이 출력되며 다른 문자열을 입력했읋 경우 같은 출력값이 나올 확률은 엄청, 매우 낮다.

JavaScript - assign() [내부링크]

JavaScript - assign() - ES6부터 지원하는 객체를 병합하는 Object객체의 method이다. - target에는 빈 객체 리터럴을 줄수도, 목표 객체에 출처 객체를 반영시킨 객체가 나오게 할 수 있다. - sources는 말 그대로 목표객체에 담을 여러 객체들을 의미한다. - assign의 구문 3과 같이 목표 변수명에 출처 객체가 반영하면 병합된 객체가 반환된다(assign으로 새로운 객체를 반환하려면, target에 빈 객체를 줘야한다.) - assign을 사용할 경우 목표 객체의 속성과 출처 객체의 속성은 같으며, 출처 객체의 &#x27;열거 가능한 자체 속성&#x27;만 목표 객체로 복사한다. - 출처에 null 또는 undefined를 제공해도 예외는 발생하지 않지만, 대상 객.......

Plugin - Live Server [내부링크]

Plugin - Live Server - HTML 페이지의 화면 구현을 바로 볼 수 있게하는 플러그인이다. - Vue.js의 개발 환경을 구현할 때 쓰는 플러그인 중 하나이다. Live Server 설치방법(Visual Studio Code 기반) 1. Visual Studio Code(이하 VSC)에서 확장 아이콘을 클릭한 뒤 Live Server를 검색하면 아래와 같이 나오는데 설치를 눌러주면 자동 설치가 되며 설치완료 시 아래와 같이 &#x27;Go Live&#x27;가 표시된다. 2. 플러그인의 브라우저를 설정하기 위해 제거 옆의 톱니바퀴 아이콘 - 확장설치 클릭 후 &#x27;ctrl + f&#x27;를 눌러서 &#x27;browser&#x27;를 검색하면 Custom Browser가 뜨는데 여기에 원하는 브라우저를 설정한다.(필자는 Chrome으.......

Vue.js - Vue 객체 [내부링크]

Vue.js - Vue 객체 - Vue.js의 애플리케이션의 객체를 의미한다. Vue 객체의 예제 - el에 html 요소중 태그를 작성한 뒤, 해당 태그 안에서 쓰는 값들은 data에서 작성된 내용이다. - Vue객체의 옵션을 쓰기 위해 &#x27;{{옵션명}}&#x27;으로 사용되는데, data도 동일하게 사용된다. - methods의 명칭을 바로 쓸 수 있다. * 출처

SQL 문제 17 - WeatherObservation Station 12(HackerRank) [내부링크]

SQL 문제 17 - Weather Observation Station 12(HackerRank) * 문제 내용 * 결과 - 이전문제의 내용을 통합한 문제로 이번엔 CIRY명 맨 앞과 맨 뒤가 모두 모음이 아닌 경우(and)에 중복을 제외한 CITY를 출력하는 문제로 총 296개의 도시명이 출력되었다. - 오라클의 regexp_like(&#x27;대상 컬럼명&#x27;,정규식내용&#x27;)을 이용한 문제풀이로 정규식의 맨 앞에 &#x27;^&#x27;를 붙여 맨 앞을 의미하고 맨 뒤에 &#x27;$&#x27;를 붙임으로써 맨 끝을 의미하며, 그리고 [] 안에 모음에 해당하는 &#x27;a&#x27;,&#x27;e&#x27;,&#x27;i&#x27;,&#x27;o&#x27;,&#x27;u&#x27;를 각각 &#x27;^&#x27;(부정)와 &#x27;|&#x27;을 이용하여 해당 모음이 아.......

SQL 문제 18 - Higher Than 75 Marks(HackerRank) [내부링크]

SQL 문제 18 - Higher Than 75 Marks(HackerRank) * 문제 내용 * 결과 - 문제의 내용은 STUDENTS 테이블안에서 MARKS가 75보다 큰 경우 해당 NAME의 뒤에서 3번째부터 끝까지의 문자열을 찾아서 해당 문자열을 오름차순으로 정렬하란 문제다. - 정렬 시 MARKS가 75 초과한 NAME은 17개, 그 중 SUBSTR(NAME,-3)을 통해 NAME COLUMNE에서 NAME 뒷자리 3번째부터의 NAME을 추출한 뒤, 그것을 UPPER에 넣어 대문자로 변환한 값을 ORDER BY ASC로 오름차순하였다. * 출처

SQL 문제 19 - Employee Names(HackerRank) [내부링크]

SQL 문제 19 - Employee Names(HackerRank) * 문제 내용 * 결과 - 간단히 보자면, NAME COLUMN을 알파벳순으로 정렬하는 문제다. - 정렬인 ORDER BY에 NAME 컬럼을 넣고 알파벳순으로 하기 위해 오름차순인 ASC를 적어주면 끝이다. * 출처

SQL 문제 20 - Employee Salaries(HackerRank) [내부링크]

SQL 문제 20 - Employee Salaries(HackerRank) * 문제 내용 * 결과 - EMPLOYEE TABLE 에서 SALARY COLUMN 값이 2000보다 작고, MONTHS COLUMN의 값이 10보다 작은 결과에서 EMPLOYEE_ID ASC 순으로 출력하는 문제였으며 총 25개의 NAME이 결과로 출력됬다. * 번외 - 여기까지 똑같이 했다면 아래와 같은 축하문구가 나온다. * 출처

SQL 문제 21 - ThePADS(HackerRank) [내부링크]

SQL 문제 21 - The PADS(HackerRank) * 문제 내용 - 1번 조건 1-1. 오름차순 이름 정렬 조회 1-2. NAME COLUMN 옆에 OCCUPATION COLUMN의 값 중 첫 대문자를 추출한 뒤 () 안에 적어서 NAME 옆에 붙인채로 출력 - 2번 조건 2-1. OCCUPATIONS TABLE에서 OCCUPATION COLUMN의 값을 그룹화한 뒤 총합 구하기 2-2. OCCUPATION COLUMN을 모두 소문자로 변환 2-3. 해당 총합을 오름차순으로 하기 2-4. 만약 총합이 같을 경우 해당 OCCUPATION COLUMN을 오름차순으로 출력하는 조건 * 결과 - 1번째 조건 1-1. ORDER BY NAME를 사용하여 오름차순 정렬 1-2. NAME COLUMN 옆에 REGEXP_SUBSTR(대상 COLUMN, 정규식, 시작위치)를 사용하여 OCCUPATION COLUMN.......

SQL 문제 22 - Type of Triangle(HackerRank) [내부링크]

SQL 문제 22 - Type of Triangle(HackerRank) * 문제 내용 - 삼각형 원리를 다루는 문제이다. - A, B, C COLUMN 값을 두고 3개의 값이 같은 정삼각형, 2개의 값이 같은 이등변 삼각형, 그 외, 3개 값이 모두 다른 일반 삼각형, 2변의 합이 한변의 길이보다 작은 삼각형이 아닌경우의 4가지 결과를 두고 출력하는 문제 * 결과 - CASE문을 통해 해당 값에서 순차적으로 삼각형이 아닌경우, 모든 변의 길이가 같은 정삼각형, 2개의 변 길이만 같은 이등변삼각형 그외 일반 삼각형으로 조건을 나눈 방법이다. * 출처

JAVA 문제 23 - 위클리 챌린지 8주차(8주차_최소직사각형) [내부링크]

JAVA 문제 23 - 위클리 챌린지 8주차(8주차_최소직사각형) * 문제 내용 - 가로, 세로 길이 중 큰 값을 구한 다음, 그 값을 어떻게 비교할지 구하는 문제 - 만약, 가로, 세로 길이의 가장 큰 길이를 구했지만, 한쪽 최고 길이가 다른 한쪽 최고 길이보다 클 경우 옆으로 눕혀서 수납할 때 가능하단 조건이 있기에, 가로는 세로길이의 큰 값을 세로는 가로길이의 큰 값을 비교하여 가장 큰 길이를 저장하는 문제 * 출력 내용 * 풀이 - 먼저 sizes 2차원 배열에서 현 배열 값 중 가로, 세로 길이를 비교한다. - 비교한 값에서 만약 가로가 세로보다 큰 경우 가로는 가로끼리, 세로는 세로끼리 비교하여 큰 값을 각각 가로와 세로에 저장한다. - 비교.......

Kotlin - 가시성 지시자 [내부링크]

Kotlin - 가시성 지시자 - 자바의 접근지시자와 비슷한 기능이라고 볼 수 있다. - 시작 위치에 따라 접근 여부를 판별하는 지시자인만큼 다양하게 접근 범위를 설정 할 수 있다. - 해당 지시자는 UML(통합 모델링 언어)의 방법으로 객체 지향 프로그래밍 소프트웨어를 개발할 때 산출물을 작성할 때 이걸 표기하기 쉽게 사용할 수 있다.

Kotlin - 엘비스 연산자 [내부링크]

Kotlin - 엘비스 연산자 - 엘비스 연산자란, 특정 변수에서 어떤 특징을 사용한다고 할 때 해당 변수가 null인 경우를 방지하여 null일 땐 그 특징이 아닌 정해진 값이 출력되도록 하는 연산자이다. 1. 변수1이 null일 때 &#x27;타입?&#x27;에 맞춰 null인데도 컴파일러가 정상 작동된다. 2. 변수2는 변수1.length인데 변수 1이 null이며, null의 length는 없으니 에러 3. 변수3은 변수1.?length인데 변수 1이 null일경우 -1이 변수 3에 초기화되어 에러가 발생되지 않는다. 4. 이처럼 엘비스 연산자는 기준변수가 null일경우 null의 특징은 null이므로 null일 때 null이 아닌 대체할 값으로 초기화하는 방법이다.

SQL 문제 16 - WeatherObservation Station 11 (HackerRank) [내부링크]

SQL 문제 16 - Weather Observation Station 11 (HackerRank) * 문제 내용 * 결과 - 이전문제의 내용을 통합한 문제로 이번엔 CIRY명 맨 앞과 맨 뒤가 모두 모음이 아닌 경우(and)가 아니라 맨 앞이 모음으로 끝나지 않거나 맨 뒤가 모음으로 끝나지 않은 조건(or)에서 중복을 제외한 CITY를 출력하는 문제로 총 458개의 도시명이 출력되었다. - 오라클의 regexp_like(&#x27;대상 컬럼명&#x27;,정규식내용&#x27;)을 이용한 문제풀이로 정규식의 맨 앞에 &#x27;^&#x27;를 붙여 맨 앞을 의미하고 맨 뒤에 &#x27;$&#x27;를 붙임으로써 맨 끝을 의미하며, 그리고 [] 안에 모음에 해당하는 &#x27;a&#x27;,&#x27;e&#x27;,&#x27;i&#x27;,&#x27;o&#x27;,&.......

SQL 문제 11- WeatherObservation Station 6(HackerRank) [내부링크]

SQL 문제 11- Weather Observation Station 6(HackerRank) * 문제 내용 * 결과 - CIRY명 맨 앞이 모음으로 시작하고 중복을 제외한 CITY를 출력하는 문제로 총 65개의 도시명이 출력되었다. - 오라클의 regexp_like(&#x27;대상 컬럼명&#x27;,정규식내용&#x27;)을 이용한 문제풀이로, 정규식의 맨 앞에 &#x27;^&#x27;를 붙임으로써 맨 앞을 의미, 그리고 [] 안에 모음에 해당하는 &#x27;a&#x27;,&#x27;e&#x27;,&#x27;i&#x27;,&#x27;o&#x27;,&#x27;u&#x27;를 각각 &#x27;|&#x27;을 이용하여 해당 모음만을 확인한다음 중복을 제외한 &#x27;DISTINCT&#x27;를 사용한 풀이법이다. * 출처

SQL 문제 12 - WeatherObservation Station 7 (HackerRank) [내부링크]

SQL 문제 12 - Weather Observation Station 7 (HackerRank) * 문제 내용 * 결과 - 이전문제와 반대로 CIRY명 맨 뒤가 모음으로 끝나고 중복을 제외한 CITY를 출력하는 문제로 총 150개의 도시명이 출력되었다. - 오라클의 regexp_like(&#x27;대상 컬럼명&#x27;,정규식내용&#x27;)을 이용한 문제풀이로, 정규식의 맨 뒤에 &#x27;$&#x27;를 붙임으로써 맨 끝을 의미하며, 그리고 [] 안에 모음에 해당하는 &#x27;a&#x27;,&#x27;e&#x27;,&#x27;i&#x27;,&#x27;o&#x27;,&#x27;u&#x27;를 각각 &#x27;|&#x27;을 이용하여 해당 모음만을 확인한다음 중복을 제외한 &#x27;DISTINCT&#x27;를 사용한 풀이법이다. * 출처

SQL 문제 13 - WeatherObservation Station 8 (HackerRank) [내부링크]

SQL 문제 13 - Weather Observation Station 8 (HackerRank) * 문제 내용 * 결과 - 이전문제의 내용을 통합한 문제로 CIRY명 맨 앞과 맨 뒤가 모음으로 끝나고 중복을 제외한 CITY를 출력하는 문제로 총 28개의 도시명이 출력되었다. - 오라클의 regexp_like(&#x27;대상 컬럼명&#x27;,정규식내용&#x27;)을 이용한 문제풀이로, regexp_like의 정규식에는 or는 존재하나, and가 존재하지 않기에.. where문의 and를 이용하여 and를 구현하였다. - 이전문제에서 알 수 있듯이.. 정규식의 맨 앞에 &#x27;^&#x27;를 붙여 맨 앞을 의미하고 맨 뒤에 &#x27;$&#x27;를 붙임으로써 맨 끝을 의미하며, 그리고 [] 안에 모음에 해당하는 &#x27;a&#x27;,&#x27;e.......

SQL 문제 14 - WeatherObservation Station 9 (HackerRank) [내부링크]

SQL 문제 14 - Weather Observation Station 9 (HackerRank) * 문제 내용 * 결과 - 이전문제와 다르게 이번엔 CIRY명 맨 앞이 모음이 아니며 중복을 제외한 CITY를 출력하는 문제로 총 421개의 도시명이 출력되었다. - 오라클의 regexp_like(&#x27;대상 컬럼명&#x27;,정규식내용&#x27;)을 이용한 문제풀이로, regexp_like의 정규식의 맨 앞에&#x27;^&#x27;를 붙일경우 해당 값은 맨 앞을 의미하지만, 그 다음 []안에서 ^를 쓸 경우 그건 부정의 의미가 된다. - 그래서 [] 안에 모음에 해당하는 &#x27;a&#x27;,&#x27;e&#x27;,&#x27;i&#x27;,&#x27;o&#x27;,&#x27;u&#x27;에 각각 &#x27;^&#x27;(부정)와 &#x27;|&#x27;을 이용하여 해당 모음이 아닌.......

SQL 문제 15 - WeatherObservation Station 10 (HackerRank) [내부링크]

SQL 문제 15 - Weather Observation Station 10 (HackerRank) * 문제 내용 * 결과 - 이전문제와 반대로 CIRY명 맨 뒤가 모음으로 끝나지 않고 중복을 제외한 CITY를 출력하는 문제로 총 336개의 도시명이 출력되었다. - 오라클의 regexp_like(&#x27;대상 컬럼명&#x27;,정규식내용&#x27;)을 이용한 문제풀이로, 정규식의 맨 뒤에 &#x27;$&#x27;를 붙임으로써 맨 끝을 의미하며, 그리고 [] 안에 모음에 해당하는 &#x27;a&#x27;,&#x27;e&#x27;,&#x27;i&#x27;,&#x27;o&#x27;,&#x27;u&#x27;를 각각 &#x27;^&#x27;(부정)와 &#x27;|&#x27;을 이용하여 해당 모음이 아닌 경우를 확인한다음 중복을 제외한 &#x27;DISTINCT&#x27;를 사용한 풀이법이다. * 번.......

SQL 문제 9 - Weather Observation Station 4(HackerRank) [내부링크]

SQL 문제 9 - Weather Observation Station 4(HackerRank) * 문제 내용 * 결과 - &#x27;STATION테이블의 도시의 총 수 - STATION테이블의 중복된 도시 수&#x27;인 문제였다. - 아래의 예시로 나오는 문구는 총 도시에서 유니크(중복되지 않는 고유값)인 도시 값을 뺀 문제란 것을 보여준다. * 출처

SQL 문제 10 - Weather Observation Station 5 (HackerRank) [내부링크]

SQL 문제 10 - Weather Observation Station 5 (HackerRank) * 문제 내용 * 결과 - 문제의 요점은 최솟값 검색 시 알파벳 길이가 짧고 알파벳 순서대로 정렬을 하는 것과 최댓값 검색 시 알파벳 길이가 길고 알파벳 순서대로 정렬을 하는 점이다. - 개인적으로 한줄엔 CITY, MIN값과 또다른 줄엔 CITY, MAX값을 어떻게 한 쿼리로 구현할까 고민했었는데.. 혹시 몰라서 쿼리를 2개로 작성하니 상관없이 동작한걸 볼 수 있었다.. * 출처

SQL 문제 5 - Japanese Cities' Attributes(HackerRank) [내부링크]

SQL 문제 5 - Japanese Cities&#x27; Attributes(HackerRank) * 문제 내용 * 결과 - SELECT * FROM CITY인 검색 결과에 도시코드가 &#x27;JPN&#x27;인 경우를 찾는 문제 * 출처

SQL 문제 6 - Japanese Cities' Names(HackerRank) [내부링크]

SQL 문제 6 - Japanese Cities&#x27; Names(HackerRank) * 문제 내용 * 결과 - 도시코드가 &#x27;JPN&#x27;인 검색결과가 나온 이전문제에서 NAME만 출력하는 문제 * 출처

SQL 문제 7 - Weather Observation Station 1(HackerRank) [내부링크]

SQL 문제 7 - Weather Observation Station 1(HackerRank) * 문제 내용 * 결과 - 문제는 STATION 테이블에서 CITY와 STATE를 출력하는 문제로.. COLUMN값인 CITY와 STATE를 검색하는 문제이다. - 테이블의 출력값이 499 ROW를 갖고 있어서 결과로 499줄이 나온다. * 출처

SQL 문제 8 - Weather Observation Station 3(HackerRank) [내부링크]

SQL 문제 8 - Weather Observation Station 3(HackerRank) * 문제 내용 * 결과 - ID가 짝수인 도시를 중복을 제외하여 출력하는 문제였다. - Oracle의 MOD() 함수를 이용하여 나머지를 구할 수 있는 방법을 이용하여 MOD(ID,2) &#x3D; 0 조건을 줘서 짝수 조건을 충족시킨다. - Oracle의 중복 제거는 대상 컬럼 앞에 &#x27;DISTINCT&#x27;를 붙여서 중복을 제외한 결과를 출력한다. * 번외 - 8문제 푸니까 아래와 같이 효과가 나오는데 뭔가 좀 뿌듯하다. * 출처

SQL 문제 2 - Revising the Select Query II(HackerRank) [내부링크]

SQL 문제 2 - Revising the Select Query II(HackerRank) * 문제 내용 * 결과 - 이전 문제처럼 도시코드가 USA일경우를 도시 이름만 출력하란 문제였으며 갯수가 또 안 적혀져 있고 4개로 정해져있어서.. 거기에 맞춰서 출력했다. * 출처

SQL 문제 3 - Select All(Hacker Rank) [내부링크]

SQL 문제 3 - Select All(HackerRank) * 문제 내용 * 결과 - 결과값을 보면 알 수 있듯이 모두 출력할 때 ID 값이 내림차순이므로 ORDER BY ID DESC를 쿼리에 추가함으로써 검색 결과 값을 내림차순으로 구현했다. * 출처

SQL 문제 4 - Select By ID(HackerRank) [내부링크]

SQL 문제 4 - Select By ID(HackerRank) * 문제 내용 * 결과 - ID값이 &#x27;1661&#x27;일 경우가 조건이므로 SELECT * FROM CITY에서 ID&#x3D;&#x27;1661&#x27;이란 조건을 줘서 푼 문제이다. * 출처

JAVA 문제 22 - 위장(프로그래머스) [내부링크]

JAVA 문제 22 - 위장(프로그래머스) * 문제 내용 * 출력 내용 * 풀이 - 종류의 수에 따라 경우의 수가 구현되는 문제였다.

Kotlin - this [내부링크]

Kotlin - this - 클래스에서 this 키워드를 통해 클래스 내부에 정의된 내용을 사용할 수 있다. - 이전에 말했듯이 코틀린에서는 기본생성자를 init 블록을 사용하여 기본생성자를 대체한다고 했었는데, 생성자의 인자를 통해 클래스 내부의 프로퍼티에 값을 할당 할 수 있다. - 자바와 달리, 코틀린은 생성자의 인자를 통해 프로퍼티에 값을 할당할 경우 프로퍼티에 값을 생성자 스스로 선언하므로 추가 선언이 필요가 없다. - 또한 this키워드가 어떤 클래스에 있느냐에 따라 this가 의미하는 클래스가 달라지는데, 이를 this@{class명} 형태로 사용한다. - this는 접근하는 위치에 따라 사용방법이 가지각색인것 같다.

Kotlin - property(프로퍼티) [내부링크]

Kotlin - property(프로퍼티) - 자바에선 private 접근 제한자인 변수에 대해 set/getter로 접근하듯이, 코틀린은 프로퍼티를 이용하여 해당 내용을 간결하게 변경할 수 있다. 프로퍼티 예시 - 위와 같이 자바에서 필드를 사용하기 위해 만든 set/getter()로 인해 길어진 코드를 코틀린에서는 단 한 줄로 바꿀 수 있다. - 그 대신, 코틀린에서는 set,getter()를 set(), get()으로 쓰며 두개를 모두 쓰기 위해선 해당 프로퍼티를 var로 작성해줘야한다.(val는 불변이므로 get()만 사용가능) - 해당 프로퍼티도 카멜표기법을 따른다. 프로퍼티 주의할 점 1. 프로퍼티는 사용시 반드시 초기화 되어 있어야 한다. 2. this키워드를 사용하지 않을 경우.......

SQL 문제 1 - Revising the Select Query I(HackerRank) [내부링크]

SQL 문제 1 - Revising the Select Query I(HackerRank) * 문제 내용 * 결과 - 문제가 좀 어이가 없는게 문제 풀이 내용 중 &#x27;COUNTRYCODE가 The CountryCode for America is USA&#x27;면 CountryCode가 America is USA라는 뜻이니 거기에 맞췄는데 답이 아니란다. - 기대한 문제 풀이는 해당 USA인 코드 중 5줄만 나오도록 한 것이여서 그것을 ROWNUM 처리하여 출력하니 해결됬는데 문제를 개떡같이 낸 듯하다.(다른 도시들도 보니까 미국맞던데 뭔 차이인지 모르겠다,) * 출처

Kotlin - 클래스 [내부링크]

Kotlin - 클래스 - 우리 클래스라고 하면 하나의 영역으로도 알아듣듯이, 프로그래밍언어에서의 클래스가 존재한다. - 코틀린의 class는 기본 생성자와 보조 생성자가 존재한다. - 코틀린에서는 init 블록을 사용하여 기본 생성자를 대체한다. - constructor란 키워드를 이용하여 또다른 생성자를 만들 수 있다. - 기본 생성자가 없이 보조 생성자만 사용할 순 있겠지만, 기본 생성자처럼 매개변수에서 바로 선언 및 초기화를 할 수 없다.

JAVA 문제 20 - 위클리 챌린지(모음 사전) [내부링크]

JAVA 문제 20 - 위클리 챌린지(모음 사전) - 사전에 기반한 문제로, &#x27;A&#x27;,&#x27;E&#x27;,&#x27;I&#x27;,&#x27;O&#x27;,&#x27;U&#x27;만을 사용하는 단어를 만들 때 사전에서 해당 단어의 순번을 나타내는 문제이다. * 문제 * 입출력 * 풀이 - 하나의 단어가 바뀌거나, 추가될 경우 1씩 증가하는 문제를 감안해서 보면 5번째 단어는 총 5번 증가한다. - 4번째 단어에서 보면 &#x27;AAAA&#x27;가 AAAE가 되기 전(AAAA, AAAAA, AAAAE, AAAAI, AAAAO, AAAAU, AAAE)으로 보아 AAAE전은 총 6번이 체크 되므로, 규칙을 보면 5번째 단어인 5번과 4번째 단어인 1번을 의미하기에 4번째 단어의 순서는 5번째 단어의 증가값 + 1으로 6이 되는걸 알.......

JAVA 문제 21 - 위클리 챌린지 6주차(복서 정렬하기) [내부링크]

JAVA 문제 21 - 위클리 챌린지 6주차(복서 정렬하기) * 문제 내용 * 출력 내용 * 풀이 - 정렬순서는 이긴 승률 &#62; 상대 무게 &#62; 자신의 무게 &#62; 작은 번호 순으로 나온것을 감안하여 비교를 해야한다. - 비교값에 필요한 순번, 상대전적, 자신의 무게, 무게차이, 현재 총 경기수를 리스트화한다. - ArrayList로 구현된 player타입의 리스트를 정렬하기 위해 Collections.sort를 사용했는데, 이 때 컬렉션에 포함된 요소 클래스가 제공한 compareTo를 이용하여 기준값에 비교대상이 포함되어 있으면 문자열 길이의 차이점을 반환하는 방법이다.

Kotlin - 상속 [내부링크]

Kotlin - 상속 - 흔히, 상속이라하면 특정 대상에 대한 권리 또는 권한을 타인에게 양도하는걸 의미하는데, 프로그래밍에서도 타 클래스의 내용을 불러와서 사용할 수 있다. - 상속을 하기 위해선 클래스 내용을 물려줄 부모 클래스와 그것을 받아서 사용하는 자식클래스가 존재한다. - 코틀린의 클래스 작성은 자바의 클래스 작성과 비슷하나, 차이점으로 클래스 블록을 작성할 필요가 없다. - 코틀린의 클래스는 디폴트로 final public으로 작성되기 때문에 상속으로 사용하려면 open이란 키워드를 사용한다. - 상속이란건 부모클래스에서 물려준 내용을 자식클래스에서 재활용하여 사용하듯이, 만약 부모클래스에서 내용을 다르게 수정하여 자.......

Kotlin - 오버라이딩, 오버로딩 [내부링크]

Kotlin - 오버라이딩, 오버로딩 - 이 글은 코틀린에서의 오버라이딩, 오버로딩을 다룬다. 오버라이딩 - 오버라이딩은 하위 클래스에서 상위 클래스의 내용을 다르게 사용할 수 있다. - 오버라이딩을 사용할 경우 반드시 앞에 override 키워드를 명시해준다. - 이전 글에서 상속을 다뤘을 때 부모클래스의 내용을 자식클래스에서 재활용한다고 한 적이 있었는데, 이것을 오버라이딩이라고 한다. - 만약, 상위 클래스가 2개 이상이고, 같은 method명을 상속할 경우 super&#60;상위 클래스명&#62;.method명(매개변수 값)으로 사용한다. 오버로딩 - 오버로딩은 오버라이딩과 달리, method 이름은 같되, 매개변수를 다르게 하여 같은 이름의 method를 여.......

Kotlin - 스마트캐스트(Smart Cast) [내부링크]

Kotlin - 스마트캐스트(Smart Cast) - 이전에 코틀린에서는 자동 형변환을 지원하지 않는다고 했다. 그럼, 어떤 값이 정수 또는 실수일 경우 그때마다 자료형을 변환하는 방법이 있는데 이를 스마트 캐스트라고 한다. - 대체로 스마트 캐스트가 적용되는 자료형은 Number형으로, Number형을 사용하면 숫자를 저장하는 특수한 자료형 객체를 만든다. - 위처럼 각각 타입이 다르지만 숫자형에 해당하므로, 숫자형 타입일경우 이렇게 값을 변환할 수 있다.

Kotlin - 람다식(Lambda Expression) [내부링크]

Kotlin - 람다식(Lambda Expression) - 함수명이 없는 익명함수를 의미한다. 람다식 작성법(Lambda Expression) - 전체적인 부분을 봤을 때 람다식이란 익명함수인 만큼 함수를 나타내는 fun를 작성할 필요가 없다. - 위와 같이 람다식의 구성은 다음과 같다. 1. 람다식의 결과를 대입할 변수 2. 람다식에 사용할 자료형 3. 반환된 자료형 4. 람다식 자료형에 맞는 매개변수 5. 실행내용 - 위를 보면 람다식의 겹치는 부분이 있는데, 다들 눈치를 챘는지 모르겠지만 2번과 4번의 자료형이 같음을 알 수 있다. 즉, 한쪽의 자료형이 명시되어 있으면 다른 한쪽이 자료형 생략이 가능하다는 점 - 만약, 2번과 4번 모두 자료형을 명시하지 않으면 람.......

Kotlin - is, !is, as, as? [내부링크]

Kotlin - is, !is, as, as? - is를 간결히 보자면 ~는 ~다란 뜻이며, !is는 ~는 ~가 아니다란 뜻으로 해석된다. - as는 null이란 예외에 대해 형변환이 불가능하므로, 안전하지 않은 캐스트 연산자이며, as?는 예외도 포함된 형변환이므로 안전한 형변환이다. * 출처

Kotlin - 함수 [내부링크]

Kotlin - 함수 - 특정 값을 넣었을 때 가공절차를 거쳐 값이 나오는 걸 함수라고 할 때, 프로그래밍에서의 함수는 특정 기능을 수행하는데 적합하다 볼 수 있다. - 매개변수란, 함수 실행 시 함수에 사용되는 변수를 의미하며, 매개변수 타입에 맞춰 값이 변한다. - 위와 같이 함수는 크게 2가지로 나뉘는데, 함수 실행 후 반환값(함수에서 나온 값)의 유무로 나뉜다. - 참고로 2번과 같이 반환자료형이 추론이 가능할 경우 생략이 가능하다. - 4번의 내용은 매개변수 개수가 정해지지 않았을 경우 사용된다. * 2021.09.25 추가 내용 - 5번에 해당하는 함수명이 없는 익명 함수도 있다. - 보통 같은 함수를 2번 이상 사용할 경우 2번 호출하는데.......

SQL(ORACLE 기준) - 문자열 byte 크기 조회 [내부링크]

SQL(ORACLE 기준) - 문자열 byte 크기 조회 - vsize(byte 측정할 문자열내용)을 사용하여 확인할 수 있다. - 자신의 DBMS의 CHARACTERSET을 확인 SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER &#x3D; &#x27;NLS_CHARACTERSET&#x27;; - KO16KSC5601 : 완성형 한글, 글자당 2Byte로 2,350자 지원한다. - KO16MSWIN949: 완성형 한글 확장형, 글자당 2Bytes로 8822자 지원한다. - UTF8: 글자당 3바이트로 한글 11,172자 지원한다. - AL32UTF8: UTF8 비슷하지만 8i 하위 버전의 클라이언트에서 사용할 수 없음(UTF-8보다 최신) - UTF8과 AL32UTF8가 따로 있는 이유는 UTF-8은 유니코드 2.1~3.0 버전을 지원하지만, AL32UTF8은 3.0 이상의 버.......

SQL(MySQL/MariaDB) - 문자열 Byte값 확인 [내부링크]

SQL(MySQL/MariaDB) - 문자열 Byte값 확인 - mysql은 length(&#x27;확인할 문자열&#x27;)을 통해 알 수 있다.

JavaScript - select box의 선택한 option id 값 구하기 [내부링크]

JavaScript - select box의 선택한 option id 값 구하기 - 해당 onchange를 select box에 준 뒤, 오브젝트 값을 매개변수로 이용한다. - select box도 사실상 배열과 같이 옵션값을 요소로 보면 알기 쉽다. 또한 javascript에 맞춰 해당 요소의 id값 구하면 끝

JSTL - &lt;c:forEach&gt;에서 break기능 구현 [내부링크]

JSTL - &#60;c:forEach&#62;에서 break기능 구현 - JSTL만으로도 forEach문에서 따로 break문을 지원하지 않기 때문에 밖에 한 변수를 생성한 뒤 특정 값이 아닐 경우 변수에 false값을 설정하여 break를 구현한다.

Kotlin - 새 프로젝트 생성 [내부링크]

Kotlin - 새 프로젝트 생성 - 필자는 IDE를 IntelliJ(이하 인텔리제이)를 사용하여 프로젝트를 생성했는데, IntelliJ는 아래 사이트에서 확인할 수 있다. Kotlin - 새 프로젝트 생성 1. 먼저 인텔리제이를 시작하여 New Project를 클릭한다. 2. 만약 SDK가 없다면 Project SDK에서 JDK를 다운로드 하자 - 필자는 기존에 가지고 있던 1.8.0_261 버전을 사용하였다. 3. SDK를 선택했으면 Kotlin(이하 코틀린)을 선택한 다음 next를 클릭해주자 4. 이제 프로젝트 이름을 작성한다음 finish를 누르면 끝 5. 프로젝트가 생성된걸 확인할 수 있다.

Kotlin - 프로그램 생성 후 문자 출력하기 [내부링크]

Kotlin - 프로그램 생성 후 문자 출력하기 - Kotlin 프로그램 생성한 다음 문자를 출력하는걸 다뤄본다. Kotlin - 프로그램 생성 방법 1. 먼저 kotlin 프로젝트의 src에서 kotlin class/file을 선택하여 kotlin file을 만들어준다. 2. 해당 파일(파일명.kt)을 만들면 아래 내용을 작성해보자 - 간단히 설명하자면 실행 시 fun main(args :Array&#60;String&#62;)을 실행하는데, 그 안에 있는 println(&#34;joonbread의 개인공부&#34;)가 동작된다. - println(&#34;내용&#34;)은 println의 내용을 콘솔창에 출력하는 내용이다. 3. 실제 구현을 확인하기 위해 alt + shift + f10키를 눌러주자 - 그럼 위와 같이 Run이라는 네모난 사각형 안에 자.......

Kotlin - 변수와 상수(작성법) [내부링크]

Kotlin - 변수와 상수(작성법) - 변수란 말 그대로 변하는 수를 말하는데, 변수란 수를 의미하기도 하지만, 저장소로도 불릴 수 있다. - 변수란 공간에 특정 값을 넣어 변수에서 그 특정값을 꺼내 쓸 수 있다고 보면 이해하기 쉽다. 변수란? 1. 변수 앞에는 var(variable의 약자)를 붙여서 사용하는데, 우리가 글을 왼쪽에서 오른쪽으로 읽듯이 변수를 왼쪽에, 값은 오른쪽에 작성한다. 2. 변수 타입을 작성하는 방법과 변수 선언을 따로 사용한 이유는, 다른 프로그래밍 언어에서 알 수 있는데, 다른 프로그래밍 언어에서는 변수를 쓰기 위해 변수타입을 쓰는경우가 있지만, kotlin은 생략이 가능하기 때문에 이런 방법이 가능하다. 3. 변수타입.......

Kotlin - 변수 타입 [내부링크]

Kotlin - 변수 타입 - kotlin은 프로그래밍 언어인 자바와 달리 숫자 타입 간 형변환을 자동으로 하지 않는다.

Kotlin - 타입 변환 [내부링크]

Kotlin - 타입 변환 - 대체로 해당 타입으로 변환하고자 한다면 대상변수명 뒤에 to를 붙인다음 타입명을 명시해준다면 거기에 맞춰서 형변환이 된다. - 참고로 작은 값에서 큰 값으로 변환 시 값을 그대로 옮길 수 있지만, 큰 값을 작은 값으로 변환 시 상대적으로 작게 변환하기 때문에 원한 값을 얻을 수 없다.

Kotlin - 연산자 [내부링크]

Kotlin - 연산자 - 우리가 값 사이 연산자에 따라 값이 다르듯이 kotlin에서도 값을 다루기 위해 연산자를 사용한다.

Kotlin - 제어문 [내부링크]

Kotlin - 제어문 - 프로그램이 원하는 조건에 맞춰 실행하고자 할 때 제어문이라는 걸 사용한다. - Kotlin의 제어문은 크게 if문(if-else / else 포함), when, for, while으로 나뉜다. if - 사전적인 의미처럼 가정을 기반으로 실행된다. - if는 타 프로그래밍 언어와 달리 조건 결과를 변수에 저장할 수 있기에, 삼항연산자가 존재하지 않는다. * 삼항연산자란 비교할 내용을 두고 해당 비교값이 참일경우와 거짓일경우 값을 반환한다. - if문은 타 프로그래밍 언어와 비슷한 구조를 나타낸다. - 처음은 반드시 if로 시작하며, 그 다음의 조건에서는 if else를 사용하나, if를 제외한 나머지를 사용할 경우 else를 사용한다. - 위처럼 if문을 사.......

SQL 문제 25 - 중성화 여부 파악하기(프로그래머스) [내부링크]

SQL 문제 25 - 중성화 여부 파악하기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - CASE문을 사용하여 REGEXP_LIKE(컬럼명, 정규식)을 이용하여 푼 문제이다. * 출처

SQL 문제 26 - 오랜 기간 보호한 동물(2)(프로그래머스) [내부링크]

SQL 문제 26 - 오랜 기간 보호한 동물(2)(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - MySQL은 LIMIT를, ORACLE은 ROWNUM을 이용하여 검색 값 중 상위 2개를 추출한 방법이다. * 출처

SQL(ORACLE 기준) - NULL값 맨 앞 / 맨 뒤 정렬 [내부링크]

SQL(ORACLE 기준) - NULL값 맨 앞 / 맨 뒤 정렬 - NULL값 먼저 정렬 시 NULLS FIRST를, 맨 뒤에 정렬 시 NULLS LAST를 사용

SQL 문제 27 - DATETIME에서 DATE로 형 변환(프로그래머스) [내부링크]

SQL 문제 27 - DATETIME에서 DATE로 형 변환(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - MySQL에선 DATE_FORMAT을 통해 DATE형식으로 변환하는 방법이 있다. - %Y는 4자리 연도(2자리는 %y)를, %m은 월, %d는 일을 표시한다. - 문제 중 주의사항으로 &#x27;시각(시-분-초)을 제외한 날짜(년-월-일)만 보여주세요.&#x27;란 요청사항이 있어서 오라클에서 datetime을 to_char(날짜,&#x27;변환타입&#x27;)을 사용하여 바꿀 수 있었다. * 출처

JAVA 기초 51 - Arrays.binarySearch()를 이용한 특정 배열에서 특정 값 위치 찾기 [내부링크]

JAVA 기초 51 - Arrays.binarySearch()를 이용한 특정 배열에서 특정 값 위치 찾기 - 배열에서 특정 값이 요소에 포함되어있는지 확인할 때 사용하는 method(이하 메서드)이다. - 최근 문자열 배열에서 특정 문자열이 포함되어있는지 확인한다음, 인덱스 위치에 따라 값을 설정하는 방법을 찾다가 이 메서드를 발견하였다. - Oracle 공식 문서에 따르면, 이진 검색 알고리즘을 사용하여 지정된 배열에서 지정된 값을 검색하는 방법을 나타낸다. - 참고로, 해당 메서드에 사용되는 배열은 정렬이 되어있어야 비로소 효과를 볼 수 있다. - 위에서 말했듯이, 해당 메서드는 지정된 배열에서 특정 값을 찾아 인덱스를 반환한다고 하였는데, 만약 값이.......

자바 기초 52 - HashMap에서 키와 값을 확인하는 방법 [내부링크]

자바 기초 52 - HashMap에서 키와 값을 확인하는 방법 - 최근 프로그래머스의 위클리 4주차 문제를 풀면서 이전에 사용했었던 HashMap에서 key를 이용한 값 여부 확인 방법을 사용하면서 다시 한번 다뤄보고자 이 글을 적는다. - HashMap변수명.containsKey(key)를 사용하여 해당 map에 key가 존재하는지 확인할 수 있다. - 그와 반대로 해당 map에 value가 있는지 확인하려면 containsValue(value)를 사용한다.

JAVA 문제 19 - 위클리 챌린지 4주차 - 직업군 추천하기 [내부링크]

JAVA 문제 19 - 위클리 챌린지 4주차 - 직업군 추천하기 - 프로그래머스에서 제공하는 문제로 특정 배열값(A)을 찾아 해당 인덱스(B)를 가지고 값을 추려낸 뒤 또 다른 특정 배열값(C)에 사칙연산을 통해 가장 큰 수를 찾는 문제이다. * 문제 내용 - 직업군 언어 점수(A), 개발자 언어 선호도(B), 개발자 사용 언어(C)의 배열 값을 가지고, B에서 선호하는 언어를 A에서 찾고, B와 C의 인덱스 매칭된 값을 찾은 A의 인덱스 값을 곱하여 최종 선호 점수가 높은 언어를 찾는 문제이다. - 만약, 최고점이 2개 이상일 경우 알파벳순에 의거하여 최고점수를 매긴다. - 출력 내용 * 풀이 - 처음엔 Arrays.binarySearch 메서드를 이용하고자 했는데, 문.......

자바 기초 53 - 비교한 문자열 사전순으로 비교 [내부링크]

자바 기초 53 - 비교한 문자열 사전순으로 비교 - compareTo()를 이용하여 유니코드 값 기반의 문자열 순서를 비교한다. - 같은 문자열이면 0을 반환 - 비교할 대상과 다른 경우 기준값에서 대상값을 뺀값을 보여준다.

JAVA 기초 54 - Directory 생성(하위 디렉토리 생성 시 부모 디렉토리 포함하여 생성) [내부링크]

JAVA 기초 54 - Directory 생성(하위 디렉토리 생성 시 부모 디렉토리 포함하여 생성) - mkdir()은 부모 디렉토리 존재 여부에 따라 생성여부가 정해진다. - mkdirs()은 부모 디렉토리 존재 여부와 상관 없이 생성한다.(부모 디렉토리가 없을 경우 같이 생성한다. - mkdir()과 mkdirs() 모두 중첩된 디렉토리가 존재하면 생성하지 않는다.

자바 기초 55 - 디렉토리 삭제 시 하위파일, 폴더 포함 삭제 [내부링크]

자바 기초 55 - 디렉토리 삭제 시 하위파일, 폴더 포함 삭제 - 삭제를 구현하면서 알게 된 점은 폴더안에 파일이 있으면 폴더는 삭제할 수 없는것이였다. - 그럼 간단히 봤을 때 폴더를 삭제하려면 하위 파일을 삭제하고 나서 삭제를 하므로, 재귀함수를 통해 삭제를 하면 끝 - 참고로 File 객체의 delete()는 삭제여부를 boolean값을 반환하는데 삭제 시 true를 반환, 아닐경우 false를 반환한다.

자바 기초 56 - zip 파일 생성 [내부링크]

자바 기초 56 - zip 파일 생성 - zip파일을 생성하기 위해 ZipOutputStream(new FileOutputStream(&#34;zip파일명&#34;))을 사용하여 zip파일을 생성한다. - 해당 ZipOutputStream 객체에 putNextEntry(new ZipEntry(파일))을 사용하여 압축파일에 저장할 파일명을 설정한다. - 이후에 읽은 파일을 ZipOutputStream 작성해주면 끝

SQL 문제 17 - 입양 시각 구하기(1)(프로그래머스) [내부링크]

SQL 문제 17 - 입양 시각 구하기(1)(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - MySQL(SUBSTRING 함수 이용) - SUBSTRING(대상 문자열명,시작위치,시작으로부터 끝위치)을 쓰면 대상 문자열의 시작 위치부터 특정 위치까지의 문자열을 찾을 수 있는데, 이를 통해 DATETIME컬럼에서 시간에 해당하는 값을 추출한다. - 해당 추출한 값에서 GROUP BY로 시간을 그룹화하고, 그 시간이 9시~19시까지 묶되, 시간 오름차순으로 만들면 값이 나온다. - Oracle(TO_CHAR 이용) - DATETIME에서 TO_CHAR()를 이용하여 날짜형식의 컬럼을 문자형식으로 변환한다. - TO_CHAR에서 &#x27;HH24&#x27;로 변환하여 DATETIME에서 시간만 추출한 값을 24시간 볼.......

SQL 문제 18 - 입양 시각 구하기(2)(프로그래머스) [내부링크]

SQL 문제 18 - 입양 시각 구하기(2)(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - MySQL(SET문, :&#x3D; 이용) - SET문을 이용하여 @TIME에 -1 대입 후 해당 값을 23까지 나오도록 :&#x3D;(대입연산자) 를 사용하여 0부터 23의 값을 시간으로 잡되, 0~23을 기준으로 COUNT하는 방법이다. - Oracle(CONNECT BY - 계층형 쿼리, JOIN 이용) - DATETIME을 0~23시로 변환한다고 했을 때, 해당 값(0~6시, 20~23시)이 없을 경우 아무리 해도 07~19시의 값만 나오는 것을 알게 되어 카운트 시간을 맞추기 위해 계층형 쿼리인 CONNECT BY로 0~23시를 지정해줬다. &#62;&#62; 아래의 사진과 같이 값이 있는 시간만 나오는 걸 볼 수 있다.(0~6시, 20~23시.......

JAVA 문제 18 - 신규 아이디 추천(프로그래머스 - 2021 KAKAO BLIND RECRUITMENT) [내부링크]

JAVA 문제 18 - 신규 아이디 추천(프로그래머스 - 2021 KAKAO BLIND RECRUITMENT) - 프로그래머스에서 제공하는 문제, 정규식을 사용한 문제이다. * 문제 내용 1단계 : 소문자 처리 2단계 : 특정 문자 제외하고 제거 3단계 : . 2번 이상 연속 사용 시 .로 변경 4단계 : .가 처음이나 끝일 경우 제거 5단계 : 빈 문자열이면 a를 대입 6단계 : 아이디가 16자 이상인 경우 16자 이상의 문자 제거 및 제거 후 마지막에 .가 존재 시 마지막 . 제거 7단계 : 아이디 길이가 2자 이하일 경우 길이가 3이 될 때까지 마지막 문자를 연속붙임 - 출력 내용 * 풀이 - 정규식과 if문, toLowerCase, substring, replaceAll, repeat 메서드들을 이용하여 문제를 풀.......

SQL 문제 19 - 없어진 기록 찾기(프로그래머스) [내부링크]

SQL 문제 19 - 없어진 기록 찾기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - OUTER JOIN을 사용하여 입양을 기록하는 ANIMAL_OUTS 테이블에 보호소 출입을 기록하는 ANIMAL_INS를 JOIN하여 연결하면 된다. - 입양 기록은 있지만, 보호소 출입 기록은 없으므로 보호소 출입 기록에 해당하는 ANIMAL_OUTS테이블의 ANIMAL_ID값이 없는 걸 조건으로 준다. * 출처

SQL 문제 20 - 있었는데요 없었습니다(프로그래머스) [내부링크]

SQL 문제 20 - 있었는데요 없었습니다(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 이전 문제와 달리 ANIMAL_INS, ANIMAL_OUTS 테이블의 KEY값이 서로 존재한 문제로 JOIN할 수 있는 KEY값을 이용하여 INNER JOIN하는 문제였다. - INNER JOIN을 이용하여 키 컬럼인 ANIMAL_ID로 두 테이블을 서로 연결하여 보호시작일인 INS.DATETIME과 입양일인 OUTS.DATETIME을 비교하여 결과를 도출하는 문제 * 출처

SQL 문제 21 - 오랜 기간 보호한 동물(1)(프로그래머스) [내부링크]

SQL 문제 21 - 오랜 기간 보호한 동물(1)(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 보호소 : ANIMAL_INS, 입양 : ANIMAL_OUTS이며, 보호소를 기준으로 입양을 못 간 동물을 찾으면 되는 문제이다. - MySQL - left outer join과 limit를 사용하여 푼 문제 - Oracle - 오라클에는 limit가 없지만 rownum을 통해 limit와 비슷하게 구현하였다. * 출처

SQL 문제 22 - 보호소에서 중성화한 동물(프로그래머스) [내부링크]

SQL 문제 22 - 보호소에서 중성화한 동물(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - REGEXP_LIKE(&#x27;컬럼명&#x27;,&#x27;정규식&#x27;)을 통해 LIKE와 IN을 동시에 쓸 수 있다. - REGEXP_LIKE에서 특정문자를 2개이상 쓰기 위해 문자 사이에 &#x27;|&#x27;를 넣어서 푼 문제이다. * 출처

SQL(ORACLE 기준) - WITH 문 [내부링크]

SQL(ORACLE 기준) - WITH 문 - 많은 데이터를 조회할 때 서브쿼리문을 여러번 사용하다가 가독성을 늘리기 위해 방법을 찾던 도중 WITH문을 알게 되었다. - 대부분의 DBMS에서 지원하며, 쿼리 실행 시 한번 파싱하고 계속 사용할 수 있는 장점이 있다. WITH 문 사용법 - 주로 위와 같이 임시테이블명을 적은 뒤, SELECT문을 사용하여 임시테이블을 검색하는 방법으로 사용된다.

SQL 문제 23- 루시와 엘라 찾기(프로그래머스) [내부링크]

SQL 문제 23- 루시와 엘라 찾기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 문제는 간단히 보자면, 해당 NAME 컬럼값이 무조건 &#x27;Lucy, Ella, Pickle, Rogan, Sabrina, Mitty&#x27; 6개 중 하나여야 한다는 점이다. - IN을 써서 해결해도 되지만, 가독성을 위해 필자는 REGEXP_LIKE문을 사용했다. - REGEXP_LIKE에서 2번째 값인 정규식을 쓸 때 무조건 정해진 이름으로 검색해야해서, 검색 이름 조건의 시작(^)과 끝($)을 작성해줬다. - 하단의 링크는 REGEXP_LIKE를 사용하여 푼 비슷한 문제를 보여준다. * 출처

SQL 문제 24 - 이름에 el이 들어가는 동물 찾기(프로그래머스) [내부링크]

SQL 문제 24 - 이름에 el이 들어가는 동물 찾기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 간단하게 동물 타입이 &#x27;Dog&#x27;인 것과 이름에 el이 포함되는지 확인하면 된다. - regexp_like를 사용하지 않고 그냥 name like &#x27;%el%&#x27;로 해도 무관하다. - 이 문제는 el이란 값이 대소문자 구별을 하지 않는게 함정인데 regexp_like를 사용할 경우 mysql은 대소문자 구별없이 나오는 듯 하나, oracle은 대소문자를 구별하여 나온 것을 알 수 있었다. * 출처

SQL 문제 8 - 동물의 아이디와 이름(프로그래머스) [내부링크]

SQL 문제 8 - 동물의 아이디와 이름(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 아이디와 이름을 아이디순으로 출력하면 끝 * 출처

SQL 문제 9 - 여러 기준으로 정렬하기(프로그래머스) [내부링크]

SQL 문제 9 - 여러 기준으로 정렬하기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 아이디, 이름, 보호 시작일을 이름순으로 정렬한 상태에서 중복된 이름이 있을 경우 보호 시작일이 나중인 동물을 먼저 보여주기 위해 보호시작일에 DESC를 적어준다. * 출처

SQL 문제 10 - 상위 n개 레코드(프로그래머스) [내부링크]

SQL 문제 10 - 상위 n개 레코드(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - Oracle - 오라클에서는 SELECT문의 행 수를 ROWNUM으로 볼 수 있는데, SELECT 시 바로 ROWNUM으로 볼 수 없기에, SELECT 결과를 다시 SELECT로 검색한 뒤 ROWNUM의 조건을 줘서 알 수 있다. - ROWNUM은 1부터 시작하기 때문에(1행), 맨 윗줄을 출력하기 위해 ROWNUM이 2보다 작을 경우로 조건을 준다. - MySQL - Oracle과는 달리, SELECT시 바로 출력할 수 있는데, LIMIT를 이용하여 SELECT문의 맨 끝에 출력하고자 할 행수를 적어주면 끝난다. * 출처

SQL 문제 11 - 최댓값 구하기(프로그래머스) [내부링크]

SQL 문제 11 - 최댓값 구하기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 최댓값을 출력하는 함수인 MAX(최대값 대상 컬럼명)을 사용하여 최댓값을 출력할 수 있다. * 출처

SQL 문제 12 - 최솟값 구하기(프로그래머스) [내부링크]

SQL 문제 12 - 최솟값 구하기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 최솟값을 출력하는 함수인 MIN(최솟값 대상 컬럼명)을 사용하여 최솟값을 출력 * 출처

SQL 문제 14 - 동물 수 구하기(프로그래머스) [내부링크]

SQL 문제 14 - 동물 수 구하기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 다들 합계를 구할 때 SUM(합계 대상 컬럼명)을 쓰지만 이럴 경우 NULL인 행은 SUM에 포함하지 않지만, SUM(1)을 통해 모든 값의 합계를 볼 수 있다. - 그러면 SUM(*)이 있는데 왜 SUM(1)을 쓰냐고 한다면, SUM(*)보다 SUM(1)이 조회 속도가 더 빠르다. * 출처

SQL 문제 13 - 중복 제거하기(프로그래머스) [내부링크]

SQL 문제 13 - 중복 제거하기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 예시에서 보이는 이름은 NULL, SAM, SAM, SWEETIE로 중복 개수는 제외하는 걸 알 수 있는데, DISTINCT를 이용하여 중복 값을 제외할 수 있다. * 출처 https://programmers.co.kr/learn/courses/30/lessons/59408?language&#x3D;oracle

SQL 문제 15 - 고양이와 개는 몇 마리 있을까(프로그래머스) [내부링크]

SQL 문제 15 - 고양이와 개는 몇 마리 있을까(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 동물 타입을 나타내는 ANIMAL_TYPE을 GROUP BY로 고양이와 개를 그룹으로 묶은 뒤, 고양이를 개보다 먼저 나오기 위해 ORDER BY를 사용하여 ABCD순으로 나오게 한 풀이다. - GROUP BY : 특정 컬럼에서 그룹화하여 나눌 수 있는 방법 * 출처 https://programmers.co.kr/learn/courses/30/lessons/59040

SQL 문제 16 - 동명 동물 수 찾기(프로그래머스) [내부링크]

SQL 문제 16 - 동명 동물 수 찾기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - GROUP BY를 사용해서 그룹화된 내용에서 조건을 주기 위해 HAVING을 사용 * 출처

JAVA 문제 17) 위클리 챌린지 2주차 - 상호 평가 [내부링크]

JAVA 문제 17) 위클리 챌린지 2주차 - 상호 평가 * 문제 내용 - 출력 내용 * 풀이 - 값에 의해 출력되는 문자 - 실행 내용 - 문제의 핵심 내용은 최저, 최고점의 중복여부를 판단, 이후 제외여부 결정하는 것 - 2차원 배열을 사용하는만큼, for문을 통해 2차원 배열의 값을 하나씩 확인할 수 있다. - 필자가 작성한 풀이법은 비효율적인 풀이법이라고 생각하며, 만약 문제를 풀었다면, 다른 분들의 풀이법을 확인하길 바란다. * 출처

SQL 문제 1 - 모든 레코드 조회하기(프로그래머스) [내부링크]

SQL 문제 1 - 모든 레코드 조회하기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 문제 내용에 맞춰 ORDER BY 를 이용하여 ANIMAL_ID에 ASC를 적용하여 오름차순으로 출력한다. * 출처

SQL 문제 2 - 역순 정렬하기(프로그래머스) [내부링크]

SQL 문제 2 - 역순 정렬하기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 이전 문제와 다르게 역순으로 출력하는 내용이다. - ORDER BY 를 이용하여 ANIMAL_ID에 DESC를 적용하여 내림차순 출력 * 출처

SQL 문제 3 - 이름이 없는 동물의 아이디(프로그래머스) [내부링크]

SQL 문제 3 - 이름이 없는 동물의 아이디(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 이름 컬럼이 NULL을 사용할 수 있으므로 해당 NAME 값이 없는채로 들어온 경우 NULL로 입력되는 걸 알 수 있다. * 출처

SQL 문제 4 - 이름이 있는 동물의 아이디(프로그래머스) [내부링크]

SQL 문제 4 - 이름이 있는 동물의 아이디(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 이전 문제와 달리, 이름이 있는 ID를 찾는 내용이며, 찾은 후 ID가 오름차순으로 정렬되도록 해야한다. - 이름 컬럼이 NULL을 사용할 수 있으므로 해당 NAME 값이 있는채로 들어온 경우 NULL이 아닌 것을 알 수 있고, ANIMAL_ID를 ORDER BY ANIMAL_ID ASC를 입력하여 ID 오름차순으로 정렬한다. * 출처

SQL 문제 5 - NULL 처리하기(프로그래머스) [내부링크]

SQL 문제 5 - NULL 처리하기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - MySQL - Oracle - 이름이 없는 컬럼을 &#x27;No name&#x27;이란 문자열로 대체하도록 한 문제로, MySQL은 IFNULL을, ORACLE은 NVL을 사용하여 푼 문제이다. - IFNULL(기준 값, 기준 값이 NULL일 경우 대체할 값) - NVL(기준 값, 기준 값이 NULL일 경우 대체할 값) * 출처

SQL 문제 6 - 아픈 동물 찾기(프로그래머스) [내부링크]

SQL 문제 6 - 아픈 동물 찾기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - 동물상태를 나타내는 컬럼인 INTAKE_CONDITION이 &#x27;Sick&#x27;일 경우 출력하면 끝 * 출처

SQL 문제 7 - 어린 동물 찾기(프로그래머스) [내부링크]

SQL 문제 7 - 어린 동물 찾기(프로그래머스) * 문제 내용 - 출력 내용 * 풀이 - INTAKE_CONDITION 컬럼 값이 &#x27;Aged&#x27;가 아닐 경우를 출력 * 출처

Python - 인터넷의 이미지를 내 PC로 저장 후 이미지 열기(Pillow 설치) [내부링크]

Python - 인터넷의 이미지를 내 PC로 저장 후 이미지 열기(Pillow 설치) - 이미지를 열기 위해 Pillow를 다운로드(powershell에서 입력) - python -m pip install Pillow * 작성 내용 - urlretrieve(url,filename)를 이용하여 url에 해당하는 이미지를 filename으로 저장한다. - image.open(filename)을 통해 해당 이미지를 넣고 img.show()를 사용하여 이미지를 열 수 있다. * 이미지 앱 설정에서 그림판 선택한 다음 실행 결과

Python - 파일을 zip 압축 파일로 만들기 [내부링크]

Python - 파일을 zip 압축 파일 만들기 - zipfile 모듈을 이용하여 압축파일을 생성해보자 - zipfile 모듈의 ZipFile을 이용하여, 압축 파일을 저장할 경로와 이름을 작성한 다음, &#x27;w&#x27;를 사용하여 파일 상태를 쓰기로 설정한다. - 그 후 실제 사용할 파일명을 write()를 통해 작성하면 끝 * 테스트.txt내용 * 결과 - 실제 압축파일 대상인 테스트.txt가 압축된 걸 확인할 수 있다.

Python - zip파일 압축 풀기 [내부링크]

Python - zip파일 압축 풀기 - 이전에 다뤘던 파일을 압축파일 만들기를 반대로 압축파일 풀기하는 방법에 대해 다룬다. Python - zip파일 압축 풀기 방법 - zipfile 모듈의 ZipFile()의 extractall(&#34;압축해제 경로&#34;)를 통해 압축파일을 해당 경로에 모두 압축해제한다. - 만약, 압축파일 중 특정 파일만 골라서 하고싶다면 extractall()이 아닌 extract()를 사용하자 * 압축 해제 결과 - 실제 압축파일의 내용이 압축해제된 것을 알 수 있다. 테스트.txt가 압축된 걸 확인할 수 있다.

Jquery - 페이지 내 radio버튼 체크 시 radio 값 모두 더하기 [내부링크]

Jquery - 페이지 내 radio버튼 체크된 값 모두 찾기 - radio버튼의 name과 class명을 이용하여 변경 시 실행되는 방법이다. Jquery - radio버튼 체크 시 radio 값 모두 더한 방법 - radio버튼의 name과 class를 이용한다. - chk 클래스에 해당하는 radio버튼의 값이 선택될 경우 해당 클래스에 해당하는 라디오 버튼 name 수 만큼 반복 실행 - 반복 실행 시 버튼 체크된 값을 더한 총 합을 text로 뿌려주면 끝 * 결과

Spring - Transactions 2(Spring 5.3.9 버전 기준) [내부링크]

Spring - Transactions(Spring 5.3.9 버전 기준) - 이전 글에 이어 트랜잭션 관리 2번째 내용을 다루고자 한다. 스프링의 트랜잭션 관리 2(선언적 트랜잭션 관리 지원 - AOP를 이용한 관리 포함) 2. 선언적 트랜잭션 관리 지원(AOP를 이용한 관리 포함) - 선언적 트랜잭션에서의 가장 중요 개념은 AOP 프록시를 통해 활성화되고 Transactional advice가 메타데이터에 의해 사용된다는 점이다. - 해당 이미지는 트랜잭션 프록시에서 메서드를 호출하는 개념을 보여준다. * 트랜잭션 구현의 예 - FooService interface - FooService interface 구현 - aop와 xml파일을 이용한 트랜잭션 구성(모든 서비스 계층 클래스가 x.y.service패키지에 정의되.......

서울시 노원구 신참떡볶이 노원상계점 [내부링크]

주소 : 서울시 노원구 상계동 신참떡볶이 노원상계점 메뉴 : 치즈떡볶이, 고구마튀김, 단호박 튀김

서울시 노원구 멕시카나 중계점 순살 뿌리고치킨(매콤달콤한 맛) [내부링크]

주소 : 서울시 노원구 멕시카나 중계점 메뉴 : 순살 뿌리고치킨(매콤달콤한 맛)

JSTL - &lt;fmt:formatDate&gt; 날짜 및 시간 패턴 [내부링크]

JSTL - &#60;fmt:formatDate&#62; 날짜 및 시간 패턴 - JSTL을 사용하면서 늘, 시간 표현 시 HH를 사용했었는데, HH가 00~23을 표현하는 만큼 01~24시를 구현하기 위해 찾아본 내용이다. JSTL - &#60;fmt:formatDate&#62; 날짜 및 시간 패턴 - 중간 Hour in day에 해당하는 h,H,k,k가 있는데, 12시간 표현과 24시간 표현은대소문자가 서로 반대인걸 확인 할수 있다.

JAVA 문제 16) 위클리 챌린지 1주차 - 부족한 금액 계산하기 [내부링크]

JAVA 문제 16) 위클리 챌린지 1주차 - 부족한 금액 계산하기 - 자바의 for문과 if문을 알면 풀기 수월하다. * 풀이 - 각각의 매개변수를 입력 받은 뒤, 갖고 있는 돈에 맞춰 인원수만큼의 값을 빼면 끝 * 출처

서울시 노원구 하이돈부리 - 가츠동(중,대) [내부링크]

주소 : 서울시 노원구 하이돈부리 메뉴 : 가츠동(중,대) - 가츠동 중 사이즈 - 가츠동 대 사이즈

서울시 노원구 BHC 상계행복점 - 뿌링클치킨 [내부링크]

주소 : 서울시 노원구 BHC 상계행복점 메뉴 : 뿌링클치킨

Python - 진수변환 [내부링크]

Python - 진수변환 - 일반적으로 우리가 사용하는 진수는 10진수지만, 공학계열에서는 2진수와 8진수, 16진수도 쓰는 만큼 진수 변환에 대해서 다뤄보고자 한다. Python - 진수변환 방법 - 2진수는 bin(), 8진수는 oct(), 16진수는 hex()를 사용하며, 10진수로 다시 변환할 경우 int(2/8/16진수 값,2 or 8 or 16)을 통해 10진수로 변환할 수 있다.

Python - 바이트에서 bit 추출 [내부링크]

Python - 바이트에서 bit 추출 - 2진수로 표현된 값은 맨 앞에 0b를 붙여서 나오는데, 01100100이 실제 2진수값이다. - &#x27;&#62;&#62;&#x27; 비트 연산자를 통해 상위비트값을 추출할 수 있다. - &#x27;0110&#x27;와 &#x27;0100&#x27;이 상위비트값과 하위비트값이다.

HTML / CSS - 웹 접근성 표준의 tabindex [내부링크]

HTML / CSS - 웹 접근성 표준의 tabindex - tabindex란 스크린리더 사용자를 위해 키보드의 Tab키를 눌렀을 때 포커스의 이동 순서를 임의로 조정할 수 있는 요소이다. - tabindex는 스크린리더 사용자 뿐만 아니라 특정 정보를 다루기 위해 해당 요소에 포커스를 주는 방법으로도 사용된다. - html의 요소에 tabindex를 사용하여 Tab키의 포커스를 조정할 수 있다. - 개인적으로 삼성 핸드폰의 TalkBack을 통해 스크린 리더를 사용해봤는데, 사용 결과 span태그는 원래 tab이동 시 focus를 받지 않으나, tabindex를 사용하여 span태그에 포커스를 줄 수 있는 것을 알 수 있었다. * 출처

Python - 파일과 디렉터리 확인 [내부링크]

Python - 파일과 디렉터리 확인 - 예전에 공부했었던 os.path 모듈의 파일 확인을 복습하고자 작성한 글이다. * 결과 - isfile()과 isdir()를 통해 경로를 인자로 넣었을 경우 파일인지 디렉터리인지 알려준다.

SQL(MySQL/MariaDB) - 현재 날짜인 값 찾기 [내부링크]

SQL(MySQL/MariaDB) - 현재 날짜인 값 찾기 SQL(MySQL/MariaDB) - 특정 날짜 값 찾기 예제 - W3Schools 사이트의 MySQL 제공 테이블 이용 * 결과 - 10248번의 날짜 - 날짜 값이 1996-07-04 - 10248번의 날짜와 동일한 날짜를 가진 컬럼

Python - 특정 URL을 이용하여 HTML 페이지를 화면에 출력 [내부링크]

Python - 특정 URL을 이용하여 HTML 페이지를 화면에 출력 - 파이썬의 urllib.request 모듈을 사용하여 url을 이용한 html 소스 코드를 화면에 출력한다. * 결과 - 실제 블로그의 html태그 내용이 나오는 걸 볼 수 있다.

Python - 특정 URL을 이용하여 HTML 페이지를 파일 저장 [내부링크]

Python - 특정 URL을 이용하여 HTML 페이지를 파일 저장 - 파일의 writelines()를 사용하여 url을 통해 읽은 데이터를 파일로 작성한다. * 결과 - 파일을 열어보면 읽었던 데이터가 나온 것을 볼 수 있다.

HTTP - REFERER를 이용한 URL 비교 [내부링크]

HTTP - REFERER를 이용한 URL 비교 - Referer 요청 헤더는 현재 요청된 페이지의 링크 이전의 웹 페이지 주소를 포함하는데, 이것을 통해 특정 링크를 보낼 수 있다. - 현재 실행중인 서버의 URL이 로컬인지 비교할 수 있다. - referer를 이용하여 현재 사이트 url을 비교할 수 있다. - 해당 방법은 로컬 파일과 데이터의 URI가 아닐 경우 사용되는 방법이다. * 출처

Spring - Transactions 1(Spring 5.3.9 버전 기준) [내부링크]

Spring - Transactions(Spring 5.3.9 버전 기준) - Spring(이하 스프링)의 Transaction(이하 트랜잭션)에 대해 설명하기 이전에 트랜잭션이란 무엇인가에 대해 알아보자 Transactions이란? - 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하는 작업 단위 - 특정 시스템에서 여러 절차를 거쳐 서비스를 제공 시 다음과 같은 원칙을 따른다. 1. 시스템에서 다루는 내용이 완전히 진행되거나 종료되어야 한다. 2. 정해진 방법이 있다면 변형되지 않고 일관적이어야 한다. 3. 서로 간섭하지 않도록 독립적인 형태여야 한다. 4. 시간과 관계없이 해당 변경사항은 영구적이여야 한다. 스프링의 트랜잭션 관리 1(다양한 트랜잭션 API에서.......

HTML / CSS - 유튜브 썸네일 사진 사용하기 [내부링크]

HTML / CSS - 유튜브 썸네일 사진 사용하기 - 유튜브의 썸네일 사진을 이미지로 쓰는 방법이다. HTML / CSS - 유튜브 썸네일 사진 사용하는 방법 - https://img.youtube.com/vi/동영상id/옵션.jpg or http://img.youtube.com/vi/동영상id/옵션.jpg 으로 작성하면 된다. - 아래의 내용은 예제이다. * 결과 - 결과를 보면 알 수 있듯이, 특정 이미지 크기가 나오지 않는데, 해당 동영상이 얼만큼 지원하느냐에 따라 다르다고 한다. - 실제 사용된 동영상의 화질을 보면 480P까지 지원하는걸 알 수 있다. * 출처 https://www.youtube.com/watch?v&#x3D;FegWac9zSkI https://www.w3schools.com/html/tryit.asp?filename&#x3D;tryhtml_default

HTML / CSS - IE rgba() 대용, 배경색 투명도 설정 [내부링크]

HTML / CSS - IE rgba() 대용, 배경색 투명도 설정 - 배경을 투명하게 설정하기 위해 rgba를 적용하는데, IE 구버전에서는 지원을 안한다고 해서 알게 된 방법이다. * rgba()의 브라우저 버전별 지원내용 HTML / CSS - IE rgba() 대용, 배경색 투명도 설정 방법 - IE에서는 filter를 통해 그라데이션(점진적인 변화)을 통해 배경색을 변경할 수 있다. - 위의 내용에서 알 수 있듯이, startColorstr이란 시작, endColorstr이란 끝을 의미한다.

HTML / CSS - 배경이미지에만 투명도 적용 [내부링크]

HTML / CSS - 배경이미지에만 투명도 적용 - 어두운 배경에 투명도를 조금 준 이미지 가운데에 텍스트를 가운데에 위치시키는데 효과적인 방법이다. HTML / CSS - 배경이미지에만 투명도 적용 - 이미지를 적용할 block형식의 태그의 너비, 높이를 설정한 뒤 ::before란 가상요소를 사용하여 적용한 방법이다. - 가상요소를 통해 top, left, right, bottom를 0으로 설정하여 이미지의 초점을 맞춘다. * 결과 * 출처

SQL(MySQL/MariaDB) - INSTR 함수를 이용한 문자열 확인 [내부링크]

SQL(MySQL/MariaDB) - INSTR 함수를 이용한 문자열 확인 - 이전 Oracle에서 내장형함수(문자형 함수)를 다뤘는데 복습 차원에서 다뤄보면서 작성한 글이다. - INSTR함수는 기준 문자열에서 특정 문자열을 찾으면 그 위치를 반환하는 함수인데, 이를 통해 찾고자 하는 문자열을 확인할 수 있다. SQL(MySQL/MariaDB)- INSTR 함수를 이용한 문자열 확인 방법 - 기준 문자열에서 찾고자할 문자열이 있을 경우 존재하는 문자열의 위치값을 알려준다.

SQL(MySQL/MariaDB) - 행 번호를 컬럼값으로 변경(ROW NUMBER) [내부링크]

SQL(MySQL/MariaDB) - 행 번호를 컬럼값으로 변경(ROW NUMBER) - 이전에 다뤘던 GRUOP_CONCAT을 다루면서 넣었던 데이터의 번호를 컬럼행으로 변경하고자 한다. - GROUP_CONCAT을 모르겠다면 아래 사이트를 참고해주시길 바란다. SQL(MySQL/MariaDB) - 행 번호를 컬럼값으로 변경 방법(ROW NUMBER) 1. Table의 내용은 아래와 같은데, 이 데이터를 행 수에 맞춰서 넣어보고자 한다. 2. ROW_NUMBER()을 통해 값을 변경해준다. - 위의 내용을 보면 알 수 있듯이, @rownum:&#x3D;@rownum+1이란 쿼리 결과값을 행을 의미한다. - (select @rownum:&#x3D;0 )TT은 @rownum을 쓰기 위해 임의의 테이블을 선언한 것이다. 3. 이제, @rownum을 통해 구한 행값.......

JSP / Servlet - 엑셀파일을 JSP 파일로 다운로드하기 [내부링크]

JSP / Servlet - 엑셀파일을 JSP 파일로 다운로드하기 - JSP파일에서도 엑셀파일을 지원하는 것을 알게되어 작성하게 된 글이다. JSP / Servlet - 엑셀파일을 JSP 파일로 다운로드 방법 1. JSP파일 위에 아래 내용을 작성하면 된다. - jsp file의 &#x27;&#60;%@ %&#62;&#x27;을 통해 페이지 설정을 통해 contentType을 엑셀로 하고, 현재 우리나라가 사용하는 UTF-8에 맞춰 작성한다. - &#34;Content-Disposition&#34;는 contents가 브라우저에 전달되는 data에 대해 작성할 수 있는데, attachment라는 값과 파일명을 작성하여 body값을 다운로드 하게 설정한다. - &#34;Content-Description&#34; 또한 헤더에 content에 대한 설명을 의미한다.......

SQL(MySQL/MariaDB) - 형변환(CONVERT, CAST) [내부링크]

SQL(MySQL/MariaDB) - 형변환(CONVERT, CAST) - 형변환으로 사용되는 함수를 알아보자 SQL(MySQL/MariaDB) - 형변환(CONVERT, CAST) 예시 - 간단히 보자면, CAST와 CONVERT는 차이가 없으며 둘 다 값을 원하는 데이터 타입으로 변경하는 방식이다.

SQL(MySQL/MariaDB) - 특정 값을 우선 정렬 [내부링크]

SQL(MariaDB, MySQL) - 특정 값을 우선 정렬 - 보통 ORDER BY를 통해서 컬럼을 기준으로 정렬하는데, 해당 컬럼의 특정 값을 우선 정렬하는 방법이 있다. SQL(MariaDB, MySQL) - 특정 값을 우선 정렬 방법 - MYSQL에서는 FILED(컬럼명,특정값1,특정값2..)를 통해 ORDER BY의 적용 컬럼에서 또 특정 값을 기준으로 정렬할 수 있다.

SQL(MySQL/MariaDB) - 문자열 반대 출력 [내부링크]

SQL(MariaDB, MySQL) - 문자열 반대 출력 - 간단히 REVERSE()란 문자열 함수를 사용하여 반대를 출력할 수 있다.

SQL(MySQL/MariaDB) - 기준 문자를 나눈 문자열을 사용하기 [내부링크]

SQL(MariaDB, MySQL) - 기준 문자를 나눈 문자열을 사용하기 - 기준 문자를 나눈 문자열을 사용하는 SUBSTRING_INDEX() 함수이다. SQL(MariaDB, MySQL) - 기준 문자를 나눈 문자열을 사용하는 방법 * 결과 - SUBSTRING_INDEX() 함수를 통해 사용할 수 있다. - INDEX값이 초과됬을 경우 INDEX값과 상관없이 모든 값이 출력된다.

HTML5 / CSS - outline 적용 불가 시 대체 방법 [내부링크]

HTML5 / CSS - outline 적용 불가 시 대체 방법 - bootstrap을 통해 outline을 사용하던 도중, IE에서 적용이 안되는 상황을 경험하여 대처하는 방법에 대해 작성한 글이다. HTML5 / CSS - outline 적용 불가 시 대체 방법 - 간단히 보면, outline은 윤곽선인만큼 대처방안으로 테두리인 border를 주면 끝

HTML5 / CSS - input file을 a태그로 대체하기 [내부링크]

HTML5 / CSS - input file을 a태그로 대체하기 - input type&#x3D;&#34;file&#34;인 태그를 사용할 때 focus시 안 이쁘게 나오는 게 보여서 수정하고자, a태그로 대체하는 방법을 작성하게 되었다. HTML5 / CSS - input file을 a태그로 대체 방법 - 간단하게, type&#x3D;&#34;file&#34;인 input 태그를 display로 감춘 뒤 a태그 onclick 속성을 통해 감춘 태그를 실행하는 방법이다.

Java 기초 50 - HttpServletRequest를 이용한 Device 구분 [내부링크]

Java 기초 50 - HttpServletRequest를 이용한 Device 구분 - HttpServletRequest객체를 이용하여 PC, 모바일, Tablet을 구분하는 방법을 다루는 글이다. HttpServletRequest를 이용한 Device 구분 방법 - HttpServletRequset 객체의 header에서 User-Agent에 내용이 나와있다. - User-Agent의 사이트를 보면 헤더의 User-Agent를 통해 Device만 구분할 수 있는 것이 아니라 웹 브라우저, OS, 하드웨어 타입 등을 알 수 있다.

JavaScript - 요소 위치 이동 [내부링크]

JavaScript - 요소 위치 이동 - 자바스크립트의 insertBefore()로 요소 위치를 이동하는 방법에 다뤄본다. JavaScript - 요소 위치 이동 방법 - 제이쿼리의 insertBefore와 유사하다. * 실행 - 버튼 클릭 - 위로 옮겨진것을 볼 수 있다.

Jquery - 태그 클릭 시 특정 태그 위치로 이동 [내부링크]

Jquery - 태그 클릭 시 특정 태그 위치로 이동 - 태그 클릭 시 특정 태그 위치로 이동하는 방법을 다뤄보자 Jquery - 태그 클릭 시 특정 태그 위치로 이동 방법 - html요소에서 animate의 scroll을 통해 위치 이동을 한다.

Plugin - slick.js [내부링크]

Plugin - alertify.js - 흔히 쓰는 슬라이드에 사용되는 플러그인이다. - 이 플러그인의 장점은 하나하나 모든 예제를 아래 사이트에서 확인해볼 수 있다는 점인것 같다. * 플러그인 사이트(다운로드 밑 Github 주소가 같이 있다.) - 사용법은 해당 사이트 아래에 내려가면 예시와 함께 서술되어있다. Plugin - slick.js cdn 및 사용 모습 - 해당 slick.js의 cdn이다. * 슬라이드 하나 * 다중 슬라이드 * 출처

삶은 왜 짐이 되었는가 - 독후감 [내부링크]

- 해당 책은 노원정보도서관에서 대여하여 읽은책이다. - 이책을 통해 느낀점은 기술과학을 통해 살아가는데 있어, 사물이 주가 아닌 사용하는 자기 자신이 주가 되야한다는 걸 느겼다. - 근데, 보면 볼 수록 현재 우리나라에서 살아가기엔 너무 꿈같은 얘기를 하지 않았나 싶을 정도로 느끼게 해준 책이다. - 사물과 사람에 대해 사용하고자 하는 용도, 스스로에게 끊임없이 갈망하는 욕구, 누군가로부터 인정받고 싶은 욕망 등을 갖고 바라보는 것이 아닌 근원을 깨닫고 그것을 다루거나 마주쳐야 한다는 것을 일깨워준 책이 아닌가 싶다.

Plugin - 이클립스에서 자바스크립트 자동완성(Tern.java) [내부링크]

Plugin - 이클립스에서 자바스크립트 자동완성 - 이클립스에서 플러그인을 통해 자바스크립트 자동완성을 사용할 수 있는 Tern.java를 다룬 글이다. 이클립스에서 자바스크립트 자동완성(Tern.java) 다운로드 방법 1. github를 이용한 Tern.java 다운로드하기 (아래 사이트 참고) - 아래 그림에서 볼 수 있듯이 Download ZIP을 통해 압축파일을 다운로드할 수 있다. 2. 이클립스 마켓 플레이스를 이용한 다운로드 2-1. 상단의 Help - Eclipse Marketplace를 클릭 2-2. tern을 검색한 다음 아래 그림에 나와있는 플러그인의 install 버튼 클릭 2-3. 라이선스 동의를 선택 후 finish 클릭 2-4. 모두 설치가 됐을 경우 restart now 버튼 클릭(재시작.......

HTML5 / CSS - iframe 태그 [내부링크]

HTML5 / CSS - iframe 태그 - HTML문서 내에 다른 문서를 포함시킬 때 사용하는 태그를 말한다. - src 속성에 URL값을 사용하여 현재 HTML문서에 다른 HTML내용을 보여줄 수 있다. HTML5 / CSS - iframe 사용 방법 - iframe에 속성과 그 안에 내용을 쓰거나 iframe이 시작되기 전에 사용할 수 있다. HTML5 / CSS - iframe 속성 - 여느 태그와 많이 차이나진 않지만, 문서 내에 다른 문서를 가져올 수 있는만큼 그만큼의 장점이 있다. - 약간 자바스크립트의 팝업 속성과 비슷한 느낌 HTML5 / CSS - iframe css 기본 값 - iframe은 말 그대로 인라인 프레임에 걸맞게 block형태의 윤곽선이 없는 프레임이란 걸 보여준다. HTML5 / CSS - iframe DOM.......

HTML5 / CSS - iframe을 이용한 유튜브 동영상 보기 [내부링크]

HTML5 / CSS - iframe을 이용한 유튜브 동영상 보기 - 이전글의 iframe에서 이어지는 글이며, iframe을 통해 유튜브를 문서 내에 볼 수 있다. HTML5 / CSS - iframe을 이용한 유튜브 동영상 보기 방법 1. 먼저 사용하고자 할 유튜브 동영상 우클릭 &#62; 동영상 URL 복사를 누른다. 2. iframe의 src에 넣어주면 되는데, src에 넣을 때 복사한 URL 마지막 /이후 내용(ID값)과 embed 속성을 통해 사용한다. - URL을 복사할 경우 실제 URL과 달리, &#x27;https://youtu.be/동영상 id값&#x27;이 나오는데 이를 실제 유튜브와 동일하게 변경하되, embed 속성을 사용하여 공유할 수 있다. - 만약 embed가 아닌 다른 방법을 쓰고 싶다면 아래 사이트의 유.......

HTML5 / CSS - outline [내부링크]

HTML5 / CSS - outline - outline(윤곽선) 속성에 대해 알아보자 outline 속성들 - outline의 style은 border와 거의 동일하다.(예: solid, dashed, dotted 등..) - outline의 color는 말 그대로 색상(RGB값 포함)을 설정한다.

JavaScript - 팝업창 닫으면서 새로고침하기 [내부링크]

JavaScript - 팝업창 닫으면서 새로고침하기 - 팝업창의 기능을 마친 후 팝업창을 닫으면서 새로고침을 하는 방법을 작성한 글이다. JavaScript - 팝업창 닫으면서 새로고침하기 - 여기서 self와 window는 현재 사용하고 있는 팝업창을 의미한다. - opener는 현재 사용하고 있는 팝업창을 열었던 부모창을 의미하며, 자바스크립트에서 location.reload()의 기능을 그대로 사용한 것 - 만약 새로고침이 아닌 부모창의 다른 자바스크립트 함수를 쓰고자 한다면 맨 앞에 opener.를 붙여주면 된다.

어떻게 분노를 다스릴 것인가? 독서 후기 [내부링크]

-해당 책은 노원정보도서관에서 대여하여 읽은책이다. - 이 책은 분노란 감정을 컨트롤에 따라 안 좋은 결과가 아닌 스스로 뿐만 아니라 주변까지 이로운 영향을 주는 법에 대해 얘기한다. - 분노를 갖고 화를 내지 않는 것이 첫 번째로 중요하며, 만약 화를 냈다면 화를 멈추는 것이 두 번째, 마지막으로 주변의 화를 치유하는게 세 번째로 중요하다는 것을 느꼈다.

SQL(Oracle 기준) - Outer Join(+) 사용 [내부링크]

SQL(Oracle 기준) - Outer Join(+) 사용 - 늘 ANSI Outer Join만 사용하다가 오라클용 Outer Join이 있다고 해서 작성한 글이다. SQL(Oracle 기준) - Outer Join(+) 사용 방법 - ANSI Outer Join : FROM 테이블 A (LEFT/RIGHT/FULL) OUTER JOIN 테이블 B ON 조인 조건 - Oracle Outer Join : 테이블을 각자 적되, where문에서 ANSI Outer Join와 같게 값이 없는 쪽에 (+)를 위치시킨다. - 조인조건을 WHERE문에 적는 만큼 조건으로 한개가 아닌 여러 컬럼을 조인할 수 있다.

JSTL - if문을 이용한 삼항 연산자 사용 [내부링크]

JSTL - if문을 이용한 삼항 연산자 사용 - jsp에서 삼항 연산자를 사용하는 방법에 대해 작성한 글이다. JSTL - if문을 이용한 삼항 연산자 사용 방법 - java의 if문 삼항 연산자와 똑같다.

자바 문제 14) - Java Bitecode BAEKJOON 21867 [내부링크]

자바 문제 14) - Java Bitecode BAEKJOON 21867 - 입력한 문자열에서 &#x27;J&#x27; / &#x27;A&#x27; / &#x27;V&#x27;를 제외한 문자를 출력하는 문제 - 사용한 프로그래밍 언어는 자바 BAEKJOON 21867 문제 내용 어서 내 손을 JAVA~ 태한이는 JAVA를 싫어한다. 매우 싫어한다. 아주 앙증맞게 깨물고 싶을 정도다. 그래서 태한이는 코딩을 할 때 알파벳 J, A, V는 사용하지 않는다. 또한 기존의 코드에서도 J, A, V가 보이면 전부 이빨로 깨물어 제거한다. 기존의 코드에서 J, A, V를 깨물어 제거한 코드를 JAVA Bitecode라고 부른다. 입력으로 길이가 N인 코드 S가 주어지면, 그 코드의 JAVA Bitecode를 구해보자! 입력 첫째 줄에 코드의 길이를.......

자바 문제 15) - 미적분학 입문하기 BAEKJOON 21868 [내부링크]

자바 문제 15) - 미적분학 입문하기 BAEKJOON 21868 - 입실론 - 델타 논법을 이용한 극한의 정의란다.. 입실론이란게 소설 속 용어인줄 알았는데 처음 들어본다.. - 입실론-델타 논법에 대해선 아래 사이트를 참조하자 https://namu.wiki/w/%EC%97%A1%EC%8B%A4%EB%A1%A0-%EB%8D%B8%ED%83%80%20%EB%85%BC%EB%B2%95 - 사용한 프로그래밍 언어는 자바 BAEKJOON 21868 문제 내용 이공계 대학생들은 대학교에 입학하면 반드시 입실론-델타 논법을 배운다. 위의 식은 입실론-델타 논법을 이용한 극한의 정의다. 21학번 신입생들이 수강하고 있는 연세대학교 공학수학 I의 2차 퀴즈가 저번 주에 있었다. 국렬이는 연세대학교 신입생들에게 극한의 정의에.......

Library - div 영역 이미지로 저장(html2canvas.js) [내부링크]

Library - div 영역 이미지로 저장(html2canvas.js) - 특정 영역을 이미지로 저장하는 방법을 알게 되어 작성하는 글이다. Library - div 영역 이미지로 저장(html2canvas.js) 예시 1. html객체를 canvas로 변환해주는 라이브러리인 html2canvas.js를 다운받거나 cdn을 이용하자 https://html2canvas.hertzen.com/ - npm과 yarn을 통해 다운로드 하거나, 아래 js와 min.js상자를 클릭하여 해당 소스를 다른 이름으로 저장하면 끝 2. 특정 영역 이미지화 3. 결과 - 버튼 클릭 시 이미지 다운로드 - 다운로드 된 이미지

SQL - FUNCTION과 PROCEDURE의 차이 [내부링크]

SQL - FUNCTION과 PROCEDURE의 차이 - FUNCTION과 PROCEDURE 둘 모두 특정 값에 따른 결과값을 반환하는 공통점이 있는데, 왜 굳이 2개로 나눠서 사용하는지 조금 의문이 있어서 작성하게 되었다. * PROCEDURE에 대해 작성한 이전 글 - 이전 글에서 다뤘던 내용에서 알 수 있듯이, 실행 후 반환여부를 선택하는 점이 차이점이라는 것으로 알고 있었으나, 이것 뿐만이 아니라 다른 차이점이 존재하는 것을 알 수 있었다. - 간단히 보자면 PROCEDURE는 서버단, FUNCTION은 화면단에서 동작한다. * PROCEDURE - 클라이언트 정보를 가지고 서버에서 동작한 결과를 반환하는 방식 - 리턴값의 유무를 선택할 수 있으며 리턴 값을 여러개 반환할 수 있다.......

SQL(MySQL/MariaDB) - FUNCTION 생성 [내부링크]

SQL(MySQL/MariaDB) - FUNCTION 생성 - MySQL에서 FUCNTION 생성하는 방법에 대해서 알아본다. SQL(MySQL/MariaDB) - FUNCTION 생성 예시 * DEFINER - 해당 FUNCTION을 정의한 사용자를 의미한다. - DEFINER은 DB명@(HOST_NAME 또는 IP주소 또는 도메인명)으로 작성된다. - 기본값은 현재 FUNCTION을 생성한 사용자로 정의된다.(생략 가능)

HTML5 / CSS - box-sizing 미 적용 시 해결 방법 [내부링크]

HTML5 / CSS - box-sizing 미 적용 시 해결 방법 - 크로스 브라우징을 신경쓰다보니 IE 8 버전 이하에서 box-sizing:border box가 적용되지 않아서 어려움을 겪었는데 다른 사람들은 나처럼 어지럽지 않길 바란다. - 아래 코드를 추가하면 끝 - 위의 내용중 if lt IE 9는 만약 IE 9버전보다 작을 경우에 실행된다는 뜻이다. - 결국, IE 9버전 미만인 IE 8버전 이하부터 스크립트를 읽는다.

HTML5 / CSS - media query IE 8 version 이하 적용 [내부링크]

HTML5 / CSS - media query IE 8 version 이하 적용 - 크로스 브라우징을 하던 도중 media query(이하 미디어 쿼리)가 동작되지 않아서 해결책을 작성하게 되었다. - 아래 그림과 같이 미디어 쿼리를 사용하는데 IE 8 version 이하는 지원하지 않음을 확인할 수 있다. media query IE 8 version 이하 적용방법 - 결론부터 말하자면 2가지 방법이 있다. 1. Respond.js를 다운로드받기 - CDN을 통해 다운로드하는 방법이다. - IE8이하부터는 미디어 쿼리를 지원하지 않았던 만큼 respond.js를 통해 강제로 미디어 쿼리를 적용시키고자 했지만, 미디어쿼리의 모든 내용이 아닌 극히 일부만을 지원한다. - 모바일 2. css3-mediaqueries.js를 다운로드.......

DB - DBeaver 설치(Windows 10 64bits 기준 - 설치일자 : 2021-06-20) [내부링크]

DB - DBeaver 설치(Windows 10 64bits 기준 - 설치일자 : 2021-06-20) - DBeaver 설치하는 방법에 대해 알아보자 준비사항 - OS : WINDOWS 10 64bit DB - DBeaver 설치(Windows 10 64bits 기준) 방법 1. DBeaver 설치 페이지로 이동( OS별 설치목록이 있음) - Windows의 Windows 64 bit(installer)를 선택 2. 다운로드 받은 아이콘 클릭 3. 설치할 언어 선택 (기본값 - 한국어 ) 4. 다음 클릭 5. 동의함 클릭 6. DBeaver 설치여부(커뮤니티와 관련됨)를 선택한 뒤 다음 클릭 7. 6번의 관리자 권한 실행 후 3~5번 내용 다시 반복하면 아래와 같이 뜨는데, 다음 클릭 8. 설치할 위치 선택 후 다음 클릭 9. 설치 클릭 10. 다운로드 이후 설치 완료 1.......

DB - DBeaver 사용 방법 [내부링크]

DB - DBeaver 사용 방법 - DBeaver 사용 방법에 대해 다뤄본다. DB - DBeaver 사용 방법 예시 1. 좌측 파일 메뉴 아래 콘센트+ 아이콘 클릭 2. 사용하고자 할 Database(이하 DB) 검색 후 선택, 다음 클릭 3. 접속할 DB의 내용을 작성한 다음 Test Connection ...을 클릭 - Authentication에서 username과 password는 실제 연결할 내용을 작성해주셔야 한다. 4. 친절하게 세팅할 드라이버를 찾아준다. 확인 후 download 클릭 5. 만약 아래와 같은 문제가 생겼을 경우(5~7번 확인) - SID가 틀려서 나온 상황 6. 서비스에 들어가서 O를 눌러서 OracleJobScheduler..의 다음 문자를 확인 - 필자는 XE였다. 7. 서비스 이름에 맞춰 ORCL &#62; XE로 변경.......

자바 문제 13) 소용돌이 예쁘게 출력하기 - BAEKJOON 1022 [내부링크]

자바 문제 13) 소용돌이 예쁘게 출력하기 - BAEKJOON 1022 - 가운데에서 반시계 방향으로 회전하며 숫자가 증가하는 소용돌이를 만드는 문제 - 사용한 프로그래밍 언어는 자바 BAEKJOON 1022 문제 내용 크기가 무한인 정사각형 모눈종이가 있다. 모눈종이의 각 정사각형은 행과 열의 쌍으로 표현할 수 있다. 이 모눈종이 전체를 양의 정수의 소용돌이 모양으로 채울 것이다. 일단 숫자 1을 0행 0열에 쓴다. 그리고 나서 0행 1열에 숫자 2를 쓴다. 거기서 부터 소용돌이는 반시계 방향으로 시작된다. 다음 숫자는 다음과 같이 채우면 된다. 이 문제는 위와 같이 채운 것을 예쁘게 출력하면 된다. r1, c1, r2, c2가 입력으로 주어진다. r1, c1은 가.......

JSTL - textarea 관련 엔터 치환 [내부링크]

JSTL - textarea 관련 엔터 치환 - textarea의 value를 DB에 넣은 뒤 다시 꺼내서 사용할 때, value값 중 개행문자를 &#60;br/&#62;태그로 바꾸고자 한다. JSTL - textarea 관련 엔터 치환 방법 - 간단하게 replace를 사용하여 개행문자를 br태그로 변환한다.

Jquery - keyboard event [내부링크]

Jquery - keyboard event - 키보드 이벤트에 대해서 복습하고자 이 글을 작성했다. - 아래 내용은 동적 태그를 기반으로 한다. Jquery - enterkey event 예시 - press는 압력을 가하다는 뜻으로 특정 값을 키보드로 입력할 경우 실행 - down은 내려가는 뜻으로 키보드를 눌렀을 때 실행된다. - up은 올라가는 뜻으로 키보드를 손으로 눌러놓은 것을 땟을 때 실행된다. keydown과 keypress간에 차이점 1. keypress는 한글, 방향키, del키 등, 키보드 이벤트를 발생하지 않는다. 2. keypress는 키로 입력받은 값의 키 코드를 반환하기 때문에 영어와 숫자에만 이벤트 발생이 된다. 3. 같은 영어나 숫자를 키보드에서 눌렀을 때 keydown이벤트는 한.......

JavaScript - 빈 문자열 확인 방법 [내부링크]

JavaScript - 빈 문자열 확인 방법 - 자바스크립트로 빈 문자열을 확인하는 방법을 다뤄보고자 한다. - 대체로 &#x27;&#x3D;&#x3D;&#x3D;&#x27; 연산자와 length를 이용한 2가지 방법이 있다. JavaScript - 빈 문자열 확인 방법 예제 1. &#x3D;&#x3D;&#x3D; 연산자 사용 1-2. 결과 - &#x27;&#x27;나 &#34;&#34;에 상관없이 해당 값이 비어있을 경우 true를 반환한다. 2. length 사용 2-2. 결과 - length를 이용하면 빈 문자열이 0이란 것을 알 수 있다.

MyBatis(마이바티스) - 다중 INSERT [내부링크]

MyBatis(마이바티스) - 다중 INSERT - 마이바티스에선 foreach문으로 다중 insert를 사용할 수 있다고 하여 이를 다뤄보고자 한다. MyBatis(마이바티스) - 다중 INSERT 예시 * Oracle - 오라클의 INSERT ALL을 사용하는 방법 * Mysql, MariaDB - foreach문을 통해 값을 반복적으로 넣은뒤 실행한다.

MyBatis(마이바티스) - 다중 UPDATE [내부링크]

MyBatis(마이바티스) - 다중 UPDATE - 마이바티스에서 다중 UPDATE하는 방법을 다루는 글이다. MyBatis(마이바티스) - 다중 UPDATE 예시 1. application.properties에서 spring.Datasource.url 설정 맨 뒤에 &#x27;&#38;allowMultiQueries&#x3D;true&#x27;를 추가해준다. 2. 마이바티스에서 update 전체를 foreach문안에 작성

자바 문제 12) 추첨을 통해 커피를 받자 - BAEKJOON 21866 [내부링크]

추첨을 통해 커피를 받자 - BAEKJOON 21866 - 2021 연세대학교 신입생 프로그래밍 경진대회에서 만든 문제 중 하나 - 사용한 프로그래밍 언어는 자바 BAEKJOON 21866 문제 내용 연세대학교 컴퓨터과학과 프로그래밍 경진대회는 2015년부터 지금까지 총 6번 진행되었다. 지금까지 진행했던 대회의 수상자는 대부분 고학번 학생들이었다. 이러한 이유로 국렬이는 신입생들에게 알고리즘 문제 풀이에 대한 동기를 부여하기 위해 2021 연세대학교 신입생 프로그래밍 경진대회를 열게 되었다. 국렬이는 가능한 많은 사람들이 대회에 많이 참여하는 것을 원하기 때문에, 대회에 참가한 학생들 중 수상자를 제외한 나머지 사람들에게 추첨을 통해서 커피.......

Java 기초 49 - String.mathces()를 이용한 문자열 포함 확인 [내부링크]

Java 기초 49 - String.mathces()를 이용한 문자열 포함 확인 - 백준 문제를 풀다가 특정 문자 정규식을 작성하는 방법을 찾다가 알게 되었다. String.mathces() 사용 예시 - 포함여부를 확인하기 위해 .(임의의 한 문자)와 *(앞 문자 0~무한개)를 포함값 양 옆에 적었다. ( .*[0-9].* &#62;&#62; 0~9까지의 수 / .*a.* &#62;&#62; 문자열에 &#34;a&#34; 포함) String.mathces() 사용 결과 - str, str2 둘다 &#34;a&#34;를 포함하지만 숫자는 str만 포함하기 때문에 str만 나온다.

Jquery - radio 버튼 readonly 적용 [내부링크]

Jquery - radio 버튼 readonly 적용 - radio버튼은 readonly 속성이 먹히지 않는데, 그를 적용하는 방법이 있다. Jquery - radio 버튼 readonly 적용 예시 - 클릭 시 false를 반환하여 클릭속성을 막는다.

JavaScript - 태그 제거 [내부링크]

JavaScript - 태그 제거 - 자바스크립트에서 정규식을 이용하여 태그를 제거할 수 있는 방법을 다룬다. JavaScript - 태그 제거 예시 1. 변수명.replace()로 정규식을 이용해서 태그를 없앨 수 있다. 2. 결과 - &#60;br&#62;태그와 &#60;br/&#62;태그 모두 적용된 걸 볼 수 있다.

기본키가 2개 이상, 중복 여부 [내부링크]

기본키가 2개 이상, 중복 여부 - 이글을 보는 사람이라면, 대부분 기본키가 어떤 의미인지는 안다고 생각한다. - 필자는 DBMS의 테이블에서 서로 연결 시 기준값을 정할 식별자를 기본키로 알고 있었고, 해당 기본키는 중복값이 없는 고유의 값이 들어가는 점이라는 걸 알고 있었다. - 근데, 생각해보니 기본키가 2개 이상(ex- 기본키 A, 기본키 B)일 때, 기본키의 중복 여부를 각각 A는 A끼리, B는 B끼리 중복이 되면 안되는지에 대해 헷갈렸다. - 기본키가 2개(A,B)일 경우 각 기본키끼리(A&#x3D;1, A &#x3D;1로 중복 또는 B&#x3D;1, B&#x3D;1로 중복) 중복 여부를 확인하는 게 아닌 기본키 전체(A&#x3D;1,B&#x3D;1 / A&#x3D;1, B&#x3D;1)를 봤.......

SQL(MySQL/MariaDB) - GROUP_CONCAT [내부링크]

SQL(MySQL/MariaDB) - GROUP_CONCAT - MariaDB에서 특정 조회값을 문자열로 합쳐서 보려고 할 때 GROUP_CONCAT를 사용한다. SQL(MySQL/MariaDB) - GROUP_CONCAT 예시 1. 오라클 디벨로퍼로 MariaDB 내용을 사용하기 위해 먼저 임의의 데이터베이스를 접속해주자.(필자는 포트번호가 3307, 기존 포트번호는 3306이다.) 2. 실행 - 특정 조회 컬럼명을 GROUP_CONCAT안에 넣은 뒤, 특정 기준 컬럼명으로 묶으면 조회값을 하나의 문자열로 볼 수 있다. - SELECT 기준 컬럼명, GROUP_CONCAT(특정 조회 컬럼명) FROM EXT GROUP BY 기준 컬럼명; 3. 결과 - SELECT * FROM EXT; - SELECT SEQ, GROUP_CONCAT(NAME) FROM EXT GROUP BY SEQ; - 특정 구분자를.......

JQuery - 동적 태그 이벤트 처리 [내부링크]

JQuery - 동적 태그 이벤트 처리 - html에 작성해놓은 태그가 아닌, 특정 처리를 통해 태그를 생성할 수 있는데 동적 태그가 이 내용에 포함된다. - 가끔 동적으로 생긴 태그에 대해서 이벤트를 처리하고자 할 때, 이벤트가 적용이 안된 경우가 있었다. - 이번엔 동적 태그 이벤트 처리에 대해 다뤄보고자 한다. JQuery - 동적 태그 이벤트 처리 예시 - 작성한 선택자에 이벤트 명이 실행됬을 때 함수가 실행되는 방식이다. - 만약 &#x27;id&#x3D;btn&#x27;를 클릭해서 body태그를 &#x27;&#60;span&#62;버튼 클릭&#60;/span&#62;&#x27;으로 수정한다면 아래와 같이 작성한다.

Jquery - contains() [내부링크]

Jquery - contains() - 문자열에서 특정 문자가 포함된 요소를 찾는 메소드명이다. Jquery - contains() 예시 - 위와 같이 특정 선택자에서 찾을 문자가 포함된 요소를 찾는다. - 위와 같이 그대로 쓸 경우 object로 인식하는데, 만약 :contains()를 이용해 특정 문자 포함 여부를 알고 싶다면 뒤에 .length를 붙여서 확인하는 방법이 있다. - :contains()는 대소문자를 구분하기 때문에 주의해서 사용해야 한다.

JSTL - 특정 문자열을 구분자를 이용하여 처리 [내부링크]

JSTL - 특정 문자열을 구분자를 이용하여 처리 - 문자열이 특정 구분자(&#x27;,&#x27;)로 이뤄진 문자열일 경우 해당 값을 반복문을 통해 하나하나씩 추출하여 사용하고 싶을 때 사용한다. - 보통 Java에선 split(&#34;구분자&#34;)와 token을 사용하는 방법이 있듯이 jstl에서도 비슷한 방법이 있다. JSTL - 특정 문자열을 구분자를 이용하여 처리 예제 1. 먼저 jstl 태그를 사용하기 위해 아래의 내용을 맨 위에 선언해주자 2-1. split을 이용한 방법 - 자바와 동일하게 split을 하면 해당 값은 문자열 배열로 사용하기 때문에 그 배열값을 다시 c:forEach 태그로 문자열 배열 안의 요소를 사용하는 방식이다. 2-2. token을 사용한 방법 - to.......

Plugin - alertify.js [내부링크]

Plugin - alertify.js - 경고, 확인 등 알림 팝업 창을 예쁘게 꾸미는 플러그인 중 하나이다. - 특정 조건에 따라 알림창을 활성화할 때 해당 알림창의 디자인을 변경해주는 플러그인이다. - 예를 들어 JS에서 if문, ajax 등의 문법을 사용할 때 쓰면 좋다. * 플러그인 사이트(다운로드 밑 Github 주소가 같이 있다.) - 사용법은 해당 사이트 아래에 내려가면 예시와 함께 서술되어있다. * alert창 * Confirm 창 * Prompt 창

니체씨, 긍정은 어떤 힘이 있나요 독서 후기 [내부링크]

- 노원정보도서관에서 대여받아 읽은 책이다. - 니체란 철학자의 방대한 내용을 목차로 나눠서 작성하였는데 보면 볼 수록 니체란 사람이 계속 해서 다르게 보일 정도로 이해하기 어려웠다. - 니체가 생각한 가치관은 누구나 이해할 수 있거나 이해할 수 없는 생각을 갖게 해준다.

우리고전으로 보는 우리시대 내면읽기 의산문답 독서 후기 [내부링크]

- 노원정보도서관에서 대여하여 읽은 책이다. - 이 책은 홍대용이 쓴 의산문답의 원문을 읽기 쉽게 풀이한 책이다. - 조선시대에 문답법을 생각해낸 사람이 아닌가 싶을 정도로 그의 생각에서 많은 것을 보고 느낄 수 있었던 책이다.

SQL(MariaDB 기준) - 특정 개수 row 조회 [내부링크]

SQL(MariaDB 기준) - 특정 개수 row 조회 - MariaDB에서 특정 개수의 행을 조회 하는 방법을 알아보자 SQL(MariaDB 기준) - 특정 개수 row 조회 예시 - 특정 행부터 특정 행까지 가져오는 경우도 있으나, 보통 맨 위에서 특정 행까지, 즉 순위를 가져올 때 사용한다. - 첫번째 줄은 0으로 처리하기에 따로 작성하지 않지만, 숫자가 2개일 경우 시작값과 끝값으로 인식한다.

SQL(MariaDB 기준) - 한글 입력 시 ? 현상 수정 [내부링크]

SQL(MariaDB 기준) - 한글 입력 시 ? 현상 수정 - MariaDB에서 한글을 입력 시 &#x27;?&#x27; 처리되는 것을 수정하고자 한다. - show variables like &#x27;c%&#x27;; 를 실행하면 아래와 같이 문자열과 관련된 설정값이 나오는데, 여기에 우린 한글 처리를 해야한다. SQL(MariaDB 기준) - 한글 입력 시 ? 현상 수정 예시 1. MariaDB 파일의 my.ini파일을 찾기 - 보통 C:\Program Files\MariaDB 10.5\data 위치에 있다. 2. my.ini파일에서 아래와 같이 수정(복붙하는게 빠름) 3. MariaDB 서비스를 다시시작 하기 4. 확인 * 그래도 한글 입력이 안될 경우

MyBatis(마이바티스) - trim, where [내부링크]

MyBatis(마이바티스) - trim, where - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - where 엘리먼트 이후 if문을 썻을 때, where 뒤에 아무것도 없는 내용을 실행할 수 있도록 만든 엘리먼트이다. MyBatis(마이바티스) - trim, where 예시 - 해당 내용의 if문의 조건이 모두 해당되지 않을 경우 실행되는 쿼리문은 &#x27;SELECT * FROM BLOG WHERE&#x27;가 될 것이다. - 하지만 이를 보완하는 방법으로 WHERE을 쓸 수 있는데, 그 내용은 다음과 같다. * trim - trim을 이용하여 trim실행 내용 앞이나 뒤에 내용을 붙이거나, 없앤 것을 실행할 수 있다. * where - where을 대신할 엘리먼트이다. * 출처 : https://mybatis.o.......

MyBatis(마이바티스) - foreach [내부링크]

MyBatis(마이바티스) - foreach - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - foreach엘리먼트를 사용하여 collection의 요소를 반복 사용할 수 있다. MyBatis(마이바티스) - foreach 예시 - map, list, set등과 같은 반복가능한 객체를 사용할 때 쓴다. * 출처 : https://mybatis.org/mybatis-3/ko/dynamic-sql.html

MyBatis(마이바티스) - bind [내부링크]

MyBatis(마이바티스) - bind - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - 파라미터를 이용하여 변수를 생성하는 엘리먼트로 파라미터에 내용을 추가하여 사용하는 방식이다. - 해당 엘리먼트는 OGNL(Object Graph Navigation Language) 표현식을 사용한다. MyBatis(마이바티스) - bind 예시 - bind를 통해 &#x27;pattern&#x27; 파라미터 값을 &#x27;%pattern%&#34;인 값을 가진 title로 변환하는 과정을 볼 수 있다. - bind의 name에는 변수이름을, value에는 파라미터 값에 추가할 내용을 작성 * 출처 : https://mybatis.org/mybatis-3/ko/dynamic-sql.html

DB - MariaDB 설치(2021.05.23 기준) [내부링크]

준비사항 - OS : WINDOWS 10 64bit MariaDB 설치(2021.05.23 기준) 1. 아래 사이트에서 원하는 버전 설치 - 홈페이지 - 필자는 Stable 상태중 가장 최신인 10.5.10을 선택 - windows 64bit 중 설치의 편의성을 위해 msi파일 설치 2. 설치된 파일 실행 - 다음 클릭 - 동의 체크한 뒤 다음 - 원하는 위치 선택, 없으면 다음 - 비밀번호 설정 후 다음 - 필자는 mysql을 따로 안 쓸 경우엔 3306을 그대로 쓰거나, 추후 사용할 때 변경(필자는 현재 mysql도 사용하기 때문에 포트번호를 3307로 변경)할 수 있으며 문제가 없으면 다음 - 설치 클릭 - 설치 완료 MariaDB 설치 확인 방법 - MySQL 클라이언트 클릭하기(mariadb검색) - 방금 설치할 때 적었.......

SQL(MariaDB 기준) - 데이터베이스 생성, 삭제 [내부링크]

SQL(MariaDB 기준) - 데이터베이스 생성, 삭제 - MariaDB에서 데이터베이스 생성, 조회, 삭제하는 방법을 알아보자 준비사항 - OS : WINDOWS 10 64bit - DBMS : MariaDB 10.5.10 - Tools : Oracle Sql Developer SQL(MariaDB 기준) - 데이터베이스 생성, 삭제 예시 1. 오라클 디벨로퍼로 MariaDB 내용을 사용하기 위해 먼저 임의의 데이터베이스를 접속해주자.(필자는 포트번호가 3307, 기존 포트번호는 3306이다.) 2. 데이터베이스를 생성, 확인, 제거 3. 결과 - 처음 생성한 후 조회시 BJ_TEST 데이터베이스가 보이며, 제거 후 조회 시 사라진걸 확인할 수 있다.

SQL(MariaDB 기준) - 테이블 생성, 삭제 [내부링크]

SQL(MariaDB 기준) - 테이블 생성, 삭제 - MariaDB에서 테이블 생성, 삭제하는 방법을 알아보자 준비사항 - OS : WINDOWS 10 64bit - DBMS : MariaDB 10.5.10 - Tools : Oracle Sql Developer SQL(MariaDB 기준) - 테이블 생성, 삭제 예시 1. 오라클 디벨로퍼로 MariaDB 내용을 사용하기 위해 먼저 임의의 데이터베이스를 접속해주자.(필자는 포트번호가 3307, 기존 포트번호는 3306이다.) 2. 테이블 생성, 삭제 3. 결과 - 생성 하기 전 현 db에 아무런 테이블이 없지만, 생성한 후 테이블이 조회되며, 제거 시 테이블이 존재하지 않는 것을 볼 수 있다.

SQL(MariaDB 기준) - 유저 생성, 조회, 삭제 [내부링크]

SQL(MariaDB 기준) - 유저 생성, 조회, 삭제 - MariaDB에서 유저 생성, 조회, 삭제하는 방법을 알아보자 준비사항 - OS : WINDOWS 10 64bit - DBMS : MariaDB 10.5.10 - Tools : Oracle Sql Developer SQL(MariaDB 기준) - 유저 생성, 조회, 삭제 예시 1. 오라클 디벨로퍼로 MariaDB 내용을 사용하기 위해 먼저 임의의 데이터베이스를 접속해주자.(필자는 포트번호가 3307, 기존 포트번호는 3306이다.) 2. 유저 생성, 조회, 제거 - 오라클과 달리 유저 생성 시 유저명과 접속가능한 공간을 명시하며 그 사이에 &#x27;@&#x27;를 붙인다. - 내부에서만 접속가능하기 위해선 &#x27;유저명&#x27;@&#x27;localhost&#x27;로 작성해주며 어디에서나 접속.......

SQL(MariaDB 기준) - NULL 관련 함수 [내부링크]

SQL(MariaDB 기준) - NULL 관련 함수 - MariaDB에서 NULL 관련 함수를 알아보자 준비사항 - OS : WINDOWS 10 64bit - DBMS : MariaDB 10.5.10 - Tools : Oracle Sql Developer SQL(MariaDB 기준) - 유저 생성, 조회, 삭제 예시 1. 오라클 디벨로퍼로 MariaDB 내용을 사용하기 위해 먼저 임의의 데이터베이스를 접속해주자.(필자는 포트번호가 3307, 기존 포트번호는 3306이다.) 2. IF, IFNULL, NULLIF 실행 - SELECT IFNULL(1번째 인자, 2번째 인자) 첫번째 인자값이 NULL이 아니면 첫번째 인자값 아닐 경우 첫번째 인자값 또는 2번째 인자값을 반환한다. - SELECT NULLIF(1번째 인자, 2번째 인자) 첫번째 인자값과 두번째 인자값이 TRUE면 NULL .......

SQL(MariaDB 기준) - merge [내부링크]

SQL(MariaDB 기준) - merge - MariaDB에서 merge 방법을 알아보자 준비사항 - OS : WINDOWS 10 64bit - DBMS : MariaDB 10.5.10 - Tools : Oracle Sql Developer SQL(MariaDB 기준) - merge - 기본 문법 - 위의 SELECT문의 테이블명에서 중복되는 키가 있을 경우 수정될 컬럼값을 UPDATE하며, 없을 경우 컬럼값을 삽입한다. - 참고로 해당 테이블에서 트리거가 활성화 된 경우 기준 키 설정을 할 수 없으므로 사용 불가능하다.(순차적인 값으로 인해 비교할 대상인 키가 없기 떄문에 매우 중요하다.) - 또한, 중첩된 INSERT문에서도 사용이 불가능하다.

JavaScript - input 숫자만 입력 [내부링크]

JavaScript - input 숫자만 입력 1. input태그 &#x27;type&#x3D;&#34;number&#34;&#x27; 2. 정규식 이용 3. 자바스크립트 이용

MyBatis(마이바티스) - constructor [내부링크]

MyBatis(마이바티스) - constructor - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - constructor, 자바로 쉽게 말하면 생성자와 같다. 클래스 안 필드(변수)를 생성자를 생성하여 값을 설정하면 그대로 사용하는 방법이다. 마이바티스 constructor 예시 - 생성자로 사용할 파라미터와 칼럼명이 일치한 클래스 - 값을 생성자에 넣기 위해 생성자를 만들자. - 생성자의 매개변수에 맞춰 생성자 순서대로 작성하는 것이 가장 합리적 - 그렇지 않을 경우 v3.4.3 이후부터 순서와 상관없이 사용 가능한데, 그 방법은 매개변수에 name을 작성, 매개변수의 이름과 형태가 같을 경우 javaType을 생략할 수 있다. - constructor의 속.......

MyBatis(마이바티스) - Auto-mapping [내부링크]

MyBatis(마이바티스) - Auto-mapping - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - 결과를 자동으로 매핑할 수 있거나, 직접 결과매핑을 만들 필요가 있는데 두가지 방법을 적절히 혼용한 방법이다. 마이바티스 Auto-mapping 예시 - 매핑될 클래스 - 실제 작동 쿼리문 - resultMap 내용 - 두가지 예제를 봤을 때, 별칭으로 작성된 id와 userName 칼럼은 자동매핑되며, hashed_password는 resultMap의 내용으로 인해 수동매핑된다. 자동매핑 종류 - FULL 자동매핑은 같은 같은 파라미터명을 써도 사용도가 다른 클래스에 사용될 경우(예를 들어 동물 종류의 이름) 문제가 발생할 수 있다. - 그런점을 방지하려면 자동매핑.......

자바 기초 48 - List와 String[]간의 변환 방법 [내부링크]

자바 기초 48 - List와 String[]간의 변환 방법 - request.getParameterValues()를 통해 &#x27;해당 name의 파라미터를 String[]으로 받은 값이 한 문자열이 아닌 리스트형태의 문자열일 때 리스트로 변환할 수 있을까?&#x27; 란 생각에서 시작된 의문이 있어 이 글을 작성하게 되었다. List와 String[]간의 변환 방법 String[] List : Arrays.asList List String[] : List.toArray List와 String[]간의 변환 예시 List와 String[]간의 변환 예시 결과 - 어찌보면 단순하게도, 대체로 생성자 함수를 통해 만들 경우 Object[] 로 반환되었다. - 그럼, Object를 우리가 원하는 형태로 만들기 위해선 형변환을 해야하는데, 리스트나 배.......

DB - Oracle SQL Developer MySQL 연동 [내부링크]

DB - Oracle SQL Developer MySQL 연동 - 오라클 디벨로퍼로 MySQL을 연동하고자 한다. - 참고로 이 글은 Oracle SQL Developer와 MySQL가 설치된 상황 기준이다. 만약 설치되어 있지 않다면 아래 내용을 참고하길 바란다. - Oracle SQL Developer 설치방법 - mysql 설치 방법 Oracle SQL Developer MySQL 연동 방법 1. Mysql JDBC를 다운로드 받자 2. Platform Independent를 선택 한 후 go to Download page 클릭 3. 맨 아래 no thanks를 클릭해서 비로그인으로 설치하자 4. 다운로드 받은 압축파일에서 jar파일 하나만 압축풀기 5. 압축푼 파일을 선택하기 쉽게 sqlDevleoper &#62; jdbc &#62; lib에 넣어주자 6. MySQL JDBC를 오라클 디벨로퍼.......

서울시 노원구 상계동 피체리아 1830 칠리피자 [내부링크]

주소 : 서울시 노원구 상계동 1830피자 메뉴 : 칠리피자 배달 앱 : 요기요 주문 날짜 : 2020/05/15 - 리치골드 - 기본

MyBatis(마이바티스) - cache-ref [내부링크]

MyBatis(마이바티스) - cache-ref - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - cache-ref란 네임스페이스 간 캐시 설정과 인스턴스를 공유하는 방법이다. 마이바티스 cache-ref 예시 * 출처 : https://mybatis.org/mybatis-3/ko/sqlmap-xml.html

MyBatis(마이바티스) - if [내부링크]

MyBatis(마이바티스) - if - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - if란 만약이란 의미에 맞춰 조건내용을 작성할 수 있다. 마이바티스 if 예시 - select문이 실행될 때 파라미터 &#x27;title&#x27;의 값이 null이 아닐 경우 if문 안의 내용이 실행되는 쿼리문이다. - 우리가 자바단에서 데이터를 조회한 후 조건에 따라 가공하는 것이 아닌, 쿼리 자체에서 조건을 통해 실행한 데이터를 가져와서 가공하므로, 대용량의 데이터일 경우 보다 더 빠르게 데이터를 조회하는 방식이다. - 물론 조건이란 말에 맞게 crud 방식에 쓰일 뿐만 아니라 여러 쿼리문에서도 사용가능하다. * 출처 : https://mybatis.org/mybatis-.......

대학-중용 도서 리뷰 [내부링크]

- 이 책은 노원정보도서관에서 대여받은 책이다. - 이 책은 사람으로서의 도리를 알려준 책이다. - 대학과 중용란 고서의 전체내용을 알 순 없었지만 해당 책을 통해 성인은 타고나는 것이 아닌 되는 것을 조금이나마 느끼지 않았나 싶다. - 이 책은 &#x27;중도&#x27;를 주로 얘기하는데, 중도는 자신의 위치와 사회에 맞는 행동만 얘기하는 것이 아니라 마음가짐과 생각을 갖춰야 함을 주로 얘기한다. - 몸과 마음가짐을 늘 깨끗이 여기며 성실한 마음가짐과 행동이 인생에서 매우 큰 이정표라는 걸 느꼈다.

MyBatis(마이바티스) - choose, when, otherwise [내부링크]

MyBatis(마이바티스) - choose, when, otherwise - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - 기준값을 가지고 선택사항에 맞춰서 실행하는, 프로그래밍 문법으로 Switch 구문과 가깝다. 마이바티스 - choose, when, otherwise 예시 * 예제 내용의 choose로 인해 SELECT * FROM BLOG WHERE state &#x3D; ‘ACTIVE’ 다음에 붙을 실행 내용이 3가지이다. ①. title 파라미터 값이 null이 아닐 경우 &#x27;AND title like #{title}&#x27;이 실행된다. ②. title이 null이되, author파라미터 값이 null이 아니고 author파라미터의 name값이 null이 아닐 경우 &#x27;AND author_name like #{author.name}&#x27;이 실행된다.......

논어 독서 후기 [내부링크]

- 해당 책은 노원정보도서관에서 대여하여 읽은 책이다. - 논어란, 공자와 그의 제자들이 문답한 내용을 저술한 책으로써 사람이란 무엇인가에 대해서 역사를 통해 얘기하는 책이다. - 사람들은 다른 사람을 객관적으로 본다고 하지만, 실질적으로 보면 현재 자신의 환경과 사회적 위치 등을 기반으로 하여 남을 주관적으로 평가하기 마련인데, 이는 자신이 내뱉은 말과 다른 사람의 행동이 따로 노는 경우가 있다. - 그런 점에서 보면, 논어는 이를 분리하여 사람을 객관적으로 보는 것과 자신을 제대로 보는 것에 주력한 문답이였으며, 어진 것이란 무엇인가에 대해 의문을 갖게 해줬다. - 개인적으로 좋아하는 문구는 &#x27;통달이란 정직하고.......

JavaScript - a태그 클릭 시 페이지 이동 막기 [내부링크]

- a태그는 클릭하면 작성된 href, 경로로 이동되는 걸 알 수 있는데, 클릭 시 추가 옵션을 적용할 수 있는 방법이 있다. - a태그의 onclick 속성에 값을 적는 것인데, 클릭 시 href로 이동하기 싫다면 onclick&#x3D;&#34;return false;&#34;란 조건을 줘서 클릭 시 href를 수행하지 않는 방법이 있다.

MyBatis(마이바티스) - select [내부링크]

MyBatis(마이바티스) - select - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - 소위 ,CRUD(생성, 읽기, 수정, 삭제)의 옵션 중 하나인 SELECT를 알아보자 마이바티스 select 예시 - 기존의 select의 SQL문법은 사용할 DB에 맞춰서 사용하면 되며 select를 사용하는데 select를 사용하기 위해 필요한 id명과 결과를 반환받기 위해 필요한 resultType은 반드시 작성해야한다. - 그럼, 그중에 알아야 할 것들이 있을텐데, 위에서 생소한 #{userId}, #{userPw}가 보일 것이다. - #{변수명}을 사용하면 해당 변수값을 사용할 수 있는 것인데, 이는 주로 preparedStatement에서 변수명으로 받은 값을 넣기에 제적이다. 마이바티.......

MyBatis(마이바티스) - insert, update, delete [내부링크]

MyBatis(마이바티스) - insert, update, delete - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - CRUD(생성, 읽기, 수정, 삭제)의 옵션 중 수정과 삭제를 알아보자 마이바티스 insert, update, delete 예시 - db에서 동작하는 SQL문법에 따라 insert는 내용을 삽입, update는 수정, delete는 삭제를 실행한다. - 쿼리문 실행 시 해당 구문의 id에 맞춰 #{변수명}의 파라미터 값에 따른 쿼리문을 실행한다. 마이바티스 insert, update, delete 속성 - 또한, insert, update 그리고 delete은 마이바티스에서 같은 속성을 쓰므로 속성을 알면 insert, update, delete 모두 적용할 수 있다.(사실 select와 같은 속성을 쓴다.) -.......

꿈의 해석 독서 후기 [내부링크]

- 본 책은 노원정보서관에서 대여받은 책입니다. - &#x27;불면증이 심해서 잠을 잘 때 도움이 되지 않을까?&#x27;란 생각으로 시작하여 읽게된 책이다. - 프로이트는 사람들의 정신 상담을 통해 상담받는 사람들이 얼만큼 현실과 동떨어진 상황이거나 지극히 현실적인 꿈을 해석하면서 본질 또는 욕구를 끄집어 내는 공식을 구현한 사람이 아닌가 싶었다. - 물론, 자신이 다뤘던 상담건에 대해 모든 꿈을 해석하는 공식을 만들순 없겠지만, 정신 상담을 통해 꿈이란 크게 소망, 욕망, 무의식, 과거, 왜곡 5가지로 나눠진 걸 알 수 있었다. - 꿈은 사람에게 심리적 방벽이 가장 낮아진 상황에서 자신이 봤었던 과거로부터 무의식에 있던 내용과 왜.......

MyBatis(마이바티스) - selectkey [내부링크]

MyBatis(마이바티스) - selectkey - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - 흔히 순서를 나타내는 값을 넣을때 우린 sequence(이하 시퀀스)를 해당 순서값 컬럼에 순차적으로 증가된 값을 넣었는데, 마이바티스에선 selectkey가 시퀀스와 같은 기능을 수행할 수 있다. 마이바티스 selectKey 예시 - selectKey구문을 쓰기 위해 insert구문 안에서 작성한 걸 볼 수 있다. - selectkey의 키프로퍼티를 &#x27;no&#x27;로 설정하여 insert문에 사용한 걸 볼 수 있다.(해당 selectkey에 사용되는 &#x27;no&#x27;는 setter / getter 메소드가 존재해야한다.) - order는 insert구문이 실행되기 전/후를 결정짓는 속성으로 in.......

MyBatis(마이바티스) - 파라미터(Parameter) [내부링크]

MyBatis(마이바티스) - 파라미터(Parameter) - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - 데이터를 주고 받을 땐 특정 매개변수를 주고 받는데 이러한 매개변수를 파라미터라고 한다. 마이바티스 parameter 예시 - 일반적으로 SELECT문을 쓸 때 보통 ID명과 반환타입, 파라미터 타입을 명시하여 사용하는게 대부분의 형태인데, 이런 방법이 아닌 파라미터에 직접 데이터 타입을 명시할 수 있다. - parameterMap의 파라미터와 칼럼명이 일치한 클래스가 있을때 - 위의 클래스명을 파라미터맵의 class에 작성한 다음 파라미터맵에 들어갈 키(파라미터명)과 그에 해당하는 타입을 작성한다음, 파라미터맵을 그대로 사용하.......

MyBatis(마이바티스) - ResultType, ResultMap [내부링크]

MyBatis(마이바티스) - ResultType, ResultMap - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - result, 즉 결과(반환)과 관련된 속성으로 resultType &#x3D; 반환타입, resultMap &#x3D; 반환타입이 작성된 Map을 의미한다. 마이바티스 resultType, resultMap 예시 - 해당 쿼리문을 실행했을 때 resultType&#x3D;&#34;int&#34;에 의해 조회 반환타입은 반드시 int형으로 나와야한다. - resultMap의 파라미터와 칼럼명이 일치한 클래스가 있을때 - 해당 resultMap에 타입을 적어준뒤 그 안에 사용될 파라미터 id와 반환될 파라미터의 내용을 작성한 다음 아래와 같이 사용할 수 있다. - resultMap 속성과 설명은 다음과 같.......

MyBatis(마이바티스) - id, result [내부링크]

MyBatis(마이바티스) - id, result - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - 그냥 이름에 맞게 간단한 매핑을 할 수 있다. id면 id를 result면 result를 쓰면 된다. 마이바티스 id, result 예시 - 기본적인 형태로 구분자로 사용될 property와 매핑된 칼럼명을 작성한다. - 또한 id, result 속성과 설명은 다음과 같다. * 출처 : https://mybatis.org/mybatis-3/ko/sqlmap-xml.html

MyBatis(마이바티스) - JDBC 타입 [내부링크]

MyBatis(마이바티스) - JDBC 타입 - 마이바티스에선 DB에서 사용했던 쿼리문을 대부분 사용할 수 있다. - DB를 연결하여 사용하는 만큼 지원하는 JDBC 타입이 있다. 마이바티스 JDBC 타입 - 공식 홈페이지의 JDBCTYPE은 다음과 같이 설명한다. - NULL이 들어갈 수 있는 값에만 설정이 가능하단 점.. 말곤 딱히 필요성을 느낄지 모르겠지만 타입종류는 아래와 같다. * 출처 : https://mybatis.org/mybatis-3/ko/sqlmap-xml.html

Plugin - Timeline.js [내부링크]

Plugin - Timeline.js - Timeline.js은 무료 플러그인으로, 타임라인을 보여주고 사용하는 플러그인이다. - 특정 기간의 내용을 작성할 때 사용한다. - 해당 플러그인과 사용용도는 아래의 홈페이지에서 볼 수 있다. - 대체로 사용법을 봤을 때, 입력란 선택 시 아래와 같이 표현된다. - 개발자도구로 봤을 때 날짜와 관련된 div창이 생기는 것을 볼 수 있으며, 선택한 값에 맞춰 prev(선택 값의 바로 이전 위치), active(선택 값의 위치), next(선택 값의 바로 다음 위치)로 다루는 걸 볼 수 있다. Timeline.js의 주요 옵션 - 자동 사용 - 보여지는 속도 조절 - 클래스명을 이용하여 커스터마이징 - 선택한 값과 이전, 다음 위치의 값 설정 - 자.......

Plugin - ScrollMe [내부링크]

Plugin - ScrollMe - ScrollMe은 무료 플러그인으로, 스크롤의 위치에 따라 페이지 안 요소 상태를 변경하는 플러그인이다. - 메인 페이지나, 스크롤의 위치에 따라 특정 요소를 강조할 때 도움이 된다. - 해당 플러그인과 사용용도는 url(http://scrollme.nckprsn.com/)에서 볼 수 있으며 아래 github를 통해 다운받을 수 있다. - 사용 방법과 예제는 해당 url에서 사용할 수 있다. - 대체로 사용법을 봤을 때, 스크롤 위치에 따라 이벤트가 적용되는 걸 볼 수 있다. - 개발자도구로 봤을 때 js파일에 스크롤과 관련된 div창에 애니메이션 효과를 줘서 스크롤 이동에 따라 해당 클래스에 애니메이션 효과를 주는 걸 볼 수 있다. ScrollMe 옵션들.......

Plugin - PagePiling.js [내부링크]

Plugin - PagePiling.js -PagePiling.js은 무료 플러그인으로, 페이지의 레이아웃 영역을 파일화하여 스크롤에 맞춰 파일을 보여주는 웹 반응형 페이지 원 스크롤링 플러그인이다. - 오래된 브라우저와 최신 브라우저 모두 작동되며, 모바일도 작동되는 점이 가장 큰 강점인것 같다. - 다운로드와 예제는 아래의 홈페이지에서 볼 수 있다. - 대체로 사용법을 봤을 때 스크롤 영향받는 페이지를 로딩하는 만큼, 화면이 높은 화질이 요구할 경우 시간이 걸리는 듯한 느낌이 조금 있기에, 그렇게 가벼워보이진 않는다. - 개발자도구로 봤을 때 날짜와 관련된 div창이 생기는 것을 볼 수 있으며, 스크롤이나 페이지의 위치에 따라 &#x27;active&#x27;.......

오늘일기 - 1일차 [내부링크]

밤을 샌 날이다보니 현재 피곤하고, 헤어스타일을 바꾸기 위해 아침부터 미용실에 가서 펌을 한 다음, 친구와 만나며 롤도 하고 술도 먹고 한 날

Plugin - multiscroll.js [내부링크]

Plugin - multiscroll.js - multiscroll.js은 분할 스크롤 기능을 통해 콘텐츠를 스크롤 할 때 원하는 분할 화면을 만드는 플러그인이다. * 해당 플러그인과 사용용도는 아래의 홈페이지에서 볼 수 있다. - 플러그인 예시 홈페이지 - github 홈페이지 - 설명 홈페이지를 보니, div창 2개를 두고,section영역에서 left와 right div창에 class에 active를 작성하여 적용하는 걸 볼 수 있었다.

오늘일기 - 2일차 [내부링크]

날씨가 참 좋은날

자바 기초 47 - JUnit [내부링크]

자바 기초 47 - JUnit - 자바용 단위 테스트 도구로 사용되는 라이브러리로, 방대한 코드에서 테스트를 진행할 때 사용하는 라이브러리이다. JUnit 추가 1. 사용할 프로젝트에 JUnit 라이브러리를 추가하기 위해 프로젝트 우 클릭 &#62; Build Path &#62; Add Libraries를 클릭 2. JUnit을 클릭한 뒤 next 3. finish를 눌러주자 4. JUNIT 5란 라이브러리가 추가된 걸 볼 수 있다. JUnit의 주요 Annotation JUnit의 주요 메서드 - 테스트란 이름에 맞춰 조건 내용인 a를 넣어 b(개발자가 원한 값)이 나오기 위해 비교한다. - assertEquals(a, b)를 쓸 때 b를 &#x27;is&#x27;로 감싸 is(b)로도 작성이 가능하다. (가독성 용이) - assertEquals(a, b)를.......

Persistence Framework(퍼시스턴스 프레임워크) [내부링크]

Persistence Framework(퍼시스턴스 프레임워크) - 이름을 해석하면 지속성 프레임워크로 데이터를 다루는데 필요한 저장, 조회, 변경, 삭제를 구현하기 위한 클래스 및 설정 파일들의 집합이다. - 흔히 JDBC 프로그래밍의 복잡함과 번거로움을 조금이나마 줄여준 방법 - 퍼시스턴스 프레임워크는 SQL문장으로 DB를 다루는, 쿼리문에 초점을 둔 &#x27;SQL 매퍼&#x27;프레임워크와 자바 객체를 통해 간접적으로 DB를 다루는 &#x27;ORM&#x27;프레임워크가 있다. - SQL 매퍼 : SQL문을 매핑해서 데이터를 객체화한 기술, DB 설계가 복잡할 경우 추천하는 방식이며 사용하는 프레임워크로 iBatis, MyBatis가 있다. - ORM : &#x27;오브젝트 관계형 매핑.......

Persistence Framework - MyBatis(마이바티스) [내부링크]

Persistence Framework - MyBatis(마이바티스) - MyBatis(이하 마이바티스) &#x27;SQL매퍼&#x27; 프레임워크 중 하나로, 공식 홈페이지에 의하면 마이바티스는 &#x27;SQL문장으로 실행하는 내용들과 그에 맞춰 연결된 매핑, 파라미터 설정들을 대신하는 퍼시스턴스 프레임워크&#x27;라고 설명하고 있다. - 모든 마이바티스 애플리케이션은 SqlSessionFactory 인스턴스를 사용하는데, 이 SqlSessionFactory 인스턴스는 애플리케이션이 실행되는 동안에만 존재해야하는 인스턴스로, 한번 생성한 뒤, 재생성하거나 삭제할 필요가 없다. - 애플리케이션 스코프에 SqlSessionFactory인스턴스를 사용하며 생명주기를 싱글톤 방식으로 관리한다. - SqlSe.......

오늘일기 - 3일차 [내부링크]

오늘일기 종료..

에이트 씽크 독서 후기 [내부링크]

- 본 책은 노원정보도서관에서 대여받은 책이다. - 이 책은 최근 코로나로 인해 비대면 서비스가 성장하고, 투기성이 팽배한 사회에서 비트코인과 주식으로 돈을 버는 세상인만큼 수학과 과학을 공부하면 적어도 눈뜨고 코베이진 않는다는 걸 얘기하지 않았나 싶다. - 책을 읽으며 느낀건 삶을 살아가는데 있어 가장 중요하게 여기는 것으로 끝나는 게 아닌, 실제로 생각하고 행동하는 것을 설명하는 책이였다. - 필자가 읽은 지금까지의 자기 계발 책은 사회적 지위와 위치보다 자신을 돌아보고 생각의 전환을 통해 유연성을 강조하여 자신의 성장력을 멈추는 반면, 이 책은 새삼 다르게 인문학에 대해 설명하며, 옛 현인들의 글을 통해 얻는 지.......

유니티 - 오브젝트 위치 배치 및 설정 [내부링크]

유니티 - 오브젝트 위치 배치 및 설정 - 본 글은 유니티에서 오브젝트 위치 배치 및 설정을 다루는 글이다. 오브젝트 위치 배치방법 및 설정 1. 새 프로젝트에서 시점을 조절하기 위해 우측 상단, 사각형에 원뿔 4개가 달린게 보일텐데 원뿔 부분을 클릭해서 &#x27;z&#x27;를 위로 &#x27;x&#x27;를 우측으로 변경해놓자 - 수학시간에 배웠던 좌표와 조금 동일하기에 X를 우측으로 냅뒀다. 2. 바닥을 만들기 위해 좌측 Hierarchy 아래 &#x27;+&#x27;를 클릭, 3d object &#62; cube를 클릭하면 가운데에 큐브가 생성된다. - cube로 한 이유는 정육면체인만큼 좌표를 설명하는데 편리하기 때문이다. 3. cube를 선택하면 해당 큐브의 좌표가 찍히는데.......

지적 대화를 위한 넓고 얕은 지식 1 독서 후기 [내부링크]

지적 대화를 위한 넓고 얕은 지식 1 독서 후기 - 해당 책은 노원정보도서관에서 대여하여 읽은 책이다. - 어찌보면 어렵지만 당연히 알아야 할 5가지의 큰 범주를 간략하게 다룬 책으로 사회에 맞춰 넓지만 얕은 지식을 간략하게 다루는 책이다. - 이 책은 순서대로 읽기를 권장하지만, 자신의 원하는 목차를 선택하여 읽어도 어렵지 않은 책이며, 원하는 부분만 읽어도 5가지의 내용이 유기적이기에 읽다보면 자연스레 5가지 목차를 다 읽을정도로 꽤 괜찮게 본 책이였다. - 현 사회에서 자신의 스탠스를 어떻게 유지해야할 지 모르는 사람들, 일상을 살아가는데 바쁘게 사는 젊은 세대에게 추천하는 책이다.

아티스트 웨이: 나를 위한 12주간의 창조성 워크숍 독서 후기 [내부링크]

아티스트 웨이: 나를 위한 12주간의 창조성 워크숍 독서 후기 - 해당 책은 노원정보도서관에서 대여하여 읽은 책이다. - 이 책은 아티스트 웨이, 즉 예술가의 길을 설명하면서 &#x27;모든 사람은 창조물이자 창조자이다&#x27;란 전제조건을 갖추고 시작한다. - 아티스트, 즉 예술가란 자신의 상황에 맞춰서 다른 사람들과 마찰이 있을 수 밖에 없는 만큼 현대사회에서 다른 사람들의 요구사항, 사회에서 필요한 것을 어쩔수 없이 배우고 행하며 잃어버린 자신에 대해서 찾아가는 길을 단계적으로 밟아가는 것을 제시한다. - 현대 사회에서 자극적인 매체와 생활을 접한 현대인들에게 자신의 본질을 깨닫고 독립적인 영혼으로서 살아가는 방법에 대.......

Plugin - jQuery Date Range Picker [내부링크]

Plugin - jQuery Date Range Picker - jQuery Date Range Picker은 무료 플러그인으로, 사용자가 날짜 범위를 선택할 수 있는 jQuery 플러그인이다. - 날짜 범위를 선택 기능을 필요로 할 때 사용하자 - 해당 플러그인과 사용용도는 아래의 홈페이지에서 볼 수 있다. - 대체로 사용법을 봤을 때, 입력란 선택 시 아래와 같이 표현된다. - 개발자도구로 봤을 때 날짜와 관련된 div창이 생기는 것을 볼 수 있으며, focus를 벗어나거나, 입력란과 하단 div창을 제외한 공간을 클릭 할 경우 &#x27;display:none;&#x27;이 되는 것을 볼 수 있다. - 참고로 우측의 show Config를 누르면 해당 소스를 볼 수 있다. jQuery Date Range Picker의 주요 기능.......

Plugin - bxSilder [내부링크]

Plugin - bxSilder - bxSilder은 무료 플러그인으로, 이름에서 볼 수 있듯이, 슬라이드와 관련된 플러그인이다. - 주로, 쇼핑몰과 같은 이미지를 슬라이드로 넘기는 메인 화면에 쓰인다. - 해당 플러그인과 사용용도는 아래의 홈페이지에서 볼 수 있다. - 대체로 사용법을 봤을 때, 버튼 클릭 시 다음 이미지를 보여준다. - 개발자도구로 봤을 때 슬라이더에 보여질 이미지를 각각의 div창에 넣은 뒤 그것을 감싼 div창을 구현한 것으로 보인다. bxSilder의 용도와 사용방법 - 위의 설명에서 볼 수 있듯이, 특정 파일(사진과 그림)을 슬라이드에 구현할 때 주로 쓰이는 걸 볼 수 있다. 1) bxSilder 파일 연결 - 다운로드 받은 파일 연결 - CDN을.......

jqueryscript.net - 제이쿼리 플러그인 모음 사이트 [내부링크]

jqueryscript.net https://www.jqueryscript.net/ - 해당 사이트는 제이쿼리 플러그인 모음 사이트이다. - 헤더를 봤을 때, home과 카테고리, 최근 제이쿼리 플러그인, 가장 많이 사용하는 플러그인, 추천 플러그인, blog로 구성되어 있다. - 카테고리를 봤을 때 여러 종류가 많은 것을 볼 수 있다. - 내용을 봤을 때 대체로 무료 플러그인으로 추정되며, 찾아봤을 때 무료인지 유료인지 인지하길 바란다. * 플러그인 내용과 사용방법 - 해당 파일에 대한 내용을 기술하고 있으며 하단 아래에 사용방법이 작성되어 있다.

소크라테스의 변명 독서 후기 [내부링크]

소크라테스의 변명 - 해당 책은 노원정보도서관에서 대여하여 읽은 책이다. - 책을 읽으며 소크라테스의 죽음에 대해 군중 심리를 통해 보여지는 다수결의 불합리성과 그로 인해 발생하는 일반화의 오류를 볼 수 있었다. - 우리가 단체로 의견을 모으거나 제시할 때 기본적으로 지키는 3가지 원칙이 있다. 첫번째는 개인의 환경과 생각, 두번째로 사회적 통념, 세번째로 적용 대상자의 상태와 환경이다. - 책에서 말하는 소크라테스의 죽음은 각자의 사회적 위치와 살아왔던 환경으로 인해 옳고 그름을 구별하지 못하는 현 시대의 문제점을 조금이나마 보는 느낌을 받았는데, 자극적인 기사와 방송을 통해 정보를 접한 사람들이 사실확인과 상관.......

C# - 상속 [내부링크]

C# - 상속 - 상속, 즉 누군가로부터 어떤 걸 물려 받는 걸 의미한다. - C#은 객체 지향 프로그래밍 방식인만큼 객체를 모듈화하여 사용한다고 했다. - 모듈에서 특정 속성을 빼서 사용하고 싶을 때 상속을 사용한다고 할 수 있다. - 즉, 부모 클래스의 기능을 자식 클래스가 물려받으며 물려받은 내용을 사용할 수 있는 방식이다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - 각각 자식, 부모 클래스를 작성한뒤 자식 클래스명 뒤에 &#x27; : 부모클래스명 &#x27;을 작성하여 상속관계를 나타낸다. - C#은 base란 키워드.......

C# - 다형성 [내부링크]

C# - 다형성 - 다형성, 다양한 형태를 의미한다. - 콜라로 예로 들면 콜라는 대체로 코카 콜라와 펩시가 말하지만 둘 다 콜라다. - 얼핏 보면 같지만(색상과 탄산도 비슷하다) 맛보면(자세히 보면) 다르듯이 다형성이 이런 의미를 갖고 있다. - 객체지향 프로그래밍 방식에서는 다형성의 2가지 개념이 있는데, 오버로딩과 오버라이딩이 있다. - 오버로딩 : 이름이 같지만, 매개변수와 반환타입이 다른 method로도 사용한다. - 오버라이딩 : 부모 클래스의 method를 자식 클래스에서 재정의하여 사용한다. - 이번 글은 오버라이딩과 오버로딩을 다루고자 한다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실.......

C# - 추상 클래스 [내부링크]

C# - 추상 클래스 - 흔히 리모컨으로 조종한다고 할 때, 버튼으로 빨리감기 또는 되감기를 진행할 수 있듯이, 조종 버튼이란 큰 범주 내에 빨리감기, 되감기 기능등의 작은 범주를 구현하는 것처럼 공통 기능의 틀은 갖추되 사용 목적에 따라 다르게 해석될 수 있는 클래스를 의미한다. - 추상 클래스 : 추상적인 틀을 갖춘 구체적이지 않은 클래스 - 추상 메서드 : 선언부(접근제한자, 반환타입, 명칭은 적시)는 있지만, 구현부(실행 내용은 적시되지 않음)는 없다. - 이번 글은 C#에서 사용하는 추상클래스와 그 안에서 존재하는 추상 메서드, 즉 선언부는 있지만, 구현부가 없는 내용이 없는 메소드를 알아보고자 한다. - VS 2019의 Console A.......

C# - 인터페이스 [내부링크]

C# - 인터페이스 - 추상클래스의 성격은 갖고 있으며 메소드 목록만 갖고 있는 명세서이다. - 또한, 추상메소드를 갖고 있으며, 인터페이스간 상속이 가능하다. - 그럼, 왜 추상클래스와 비슷한데도 불구하고 따로 인터페이스를 사용할까? - 결론부터 보자면 추상 클래스는 상속이 한개만 되지만, 인터페이스는 다중 상속이 가능하다. * 추상클래스와 인터페이스의 공통점 - 추상메소드를 가지고 있다. - 객체 생성 불가능 * 추상클래스와 인터페이스의 차이점 - 추상클래스는 추상 메소드를 무조건 하나라도 갖고 있으며, 다른 메소드와 같이 작성할 수 있지만, 인터페이스는 추상 메소드만 작성할 수 있다. - 인터페이스는 추상클래스와 달리 다.......

C# - 봉인 클래스 [내부링크]

C# - 봉인 클래스 - 이전에 다뤘던 추상클래스, 인터페이스와 달리 상속 시 더이상 재정의되지 않도록 하는 클래스이다. - 메소드 앞에 반드시 sealed 키워드를 붙여서 사용한다. - 이번 글은 C#에서 사용하는 봉인 클래스를 다뤄보는 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - 그림1)에서 볼 수 있듯이 sealed 키워드로 작성한 ComputerGame클래스의 Game메소드를.......

C# - 델리게이트 [내부링크]

C# - 델리게이트 - 흡사 심부름을 시키듯이, 메소드를 직접 호출하지 않고 델리게이트를 이용해서 지정 메소드를 대신 호출하는 기능을 의미한다. - 대리자가 있는만큼 정확한 내용을 실행해야하는 만큼 타입 체크와 객체 지향적인 성향이 많이 강하다. - 선언 방식 : delegate 데이터형 이름(매개변수) 기존 메소드 작성과 비슷하다. - 사용 방법 : 데이터 타입 이름 &#x3D; delegate이름(매개변수)으로 기존 객체 생성과 비슷하다. - 이번 글은 C#에서 사용하는 delgate를 다뤄보기 위해 작성한 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니.......

C# - 접근제한자 [내부링크]

C# - 접근제한자 - 다들 관리를 할 때 단체로 어떤 물건이나 정보를 사용할 때 사용자의 접근 권한에 맞춰 정보나 물품을 관리할 것이다. - 이처럼, 접근 제한자는 사용자의 접근 권한에 제한을 둬서 프로그램이 사용유무를 판별할 수 있도록 한다. 접근 제한자 종류 및 설명

창의성을 타고나다 :심리학의 최전선에서 본 비범한 마음의 10가지 작동 원리 독서 후기 [내부링크]

창의성을 타고나다 :심리학의 최전선에서 본 비범한 마음의 10가지 작동 원리 - 해당 책은 노원정보도서관에서 대여하여 읽은 책이다. - 이 책은 창의성을 기르는데 해답을 주는 것이 아닌 길을 알려주는 책으로, 창의력과 관련된 여러 문서에서 봤던 내용들이 종합된 책이였다. - 사람들은 구체적이지 않은 말을 듣게 되면 객관적으로 보는 것이 아닌 사회적 통념상 뜻과 자신의 생각을 합리화한 뒤 추론하여 결과를 내비치는 경우가 많다. - 이 책은 자신이 남들과 다른 독자적인 존재라는 인식을 통해 동조라는 틀에서 벗어나 창의성에 대해 한 발 다가갈 수 있는 점을 얘기한다. - 이 책에서 남들과 다른 관점에서 시작되는 만큼 문화적, 사.......

JavaScript - JSON [내부링크]

JavaScript - JSON - JavaScript Object Notation(이하 JSON)은 key - value로 이뤄진 데이터 오브젝트를 전달하기 위해 만들어진 데이터 포맷 기준이라고 볼 수 있다. - JSON은 자바스크립트 언어로부터 파생됬지만, 독립적인 데이터 포맷이므로 다양한 프로그래밍 언어와 플랫폼과 상관없이 쉽게 통신에 사용할 수 있다. - JSON의 오브젝트는 자바스크립트의 오브젝트로 변환되지만 JSON 오브젝트는 new 연산자를 사용해서 인스턴스를 생성할 수 없다. - JSON 오브젝트는 parse함수를 사용하여 JSON 형태의 문자열을 자바스크립트 데이터 타입으로 변환한다. - stringify 함수는 자바스크립트 데이터 타입을 JSON형태의 문자열로 바꾼다.

유니티 - Unity 설치(Window 10 - 2021.04.19 기준 ) [내부링크]

유니티 - Unity 설치(Window 10 - 2021.04.19 기준 ) - 유니티가 게임 개발? 쪽에 인기가 많은 것 같아서 한번 알아보고자 설치한 것 - 본 글은 Windows 10 운영체제에서 유니티를 설치하는 방법을 다룬다. - 참고로 유니티 설치하는데 많은 공간이 필요하다(약 12GB쓰는거 같고 설치하는데 시간을 30~40분으로 잡아두자, 물론 그정도는 안걸리니 다들 밥 먹구 합시다.) 유니티 설치 순서 1. 먼저 아래 링크에 들어가서 시작하기를 누르자 2. 2개의 탭 중 &#x27;개인&#x27; 탭을 클릭한 다음 우린 공부용으로 사용할 것이니 Personal에서 시작하기 클릭 3. 자신의 경험에 기반하여 선택하자. 필자는 좌측이다. 4. 동의 클릭 5. 설치된 파일을 실.......

C# - 연산자 [내부링크]

C# - 연산자 - 연산자, 즉 사칙연산과 같은 대상 1과 대상 2를 산술연산하거나 대상 1과 대상 2를 비교하여 논리적인 판단을 할 수 있는 기호를 의미한다. - 이번 글은 C#의 연산자를 다루는 글이다. C# 연산자 - OR과 AND연산에 대해 처음 듣거나 비트란 단어를 처음 들은 경우 비트 연산이 헷갈릴 수 있다. - 비트연산의 !, &#38;를 사용하려면, 해당 값의 자리 개수가 동일해야 구별하기 쉽다. - A가 1100, B가 1010 4자리 비트로 표현 될 경우, OR은 둘 중 하나라도 1이 있다면, 그 자리의 결과값이 1이 나온다.(결과 : 1110) - A가 1100, B가 1010 4자리 비트로 표현 될 경우, AND는 두개 다 1이 아닌 경우 1이 아닌 결과값이 나온다.(결과.......

C# - 조건문 (if - else - else if) [내부링크]

C# - 조건문 (if - else - else if) - 특정 조건에 따라 실행되는 영역을 의미한다. - 이번 글은 C#에서 사용하는 조건문 중 if - else - else if를 다뤄보기 위해 작성한 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - if(조건 내용) { 실행 내용 } - else if(조건 내용) { 실행 내용 } - else{ 실행 내용 } 2. ctrl + f5를 눌러 실행한 결과 - 위의 내용과 같이, if문.......

C# - 조건문 (switch) [내부링크]

C# - 조건문 (switch) - 스위치의 뜻과 같이 특정 값에 수행되는 영역이다. - 이번 글은 C#에서 사용하는 조건문 중 switch를 다뤄보기 위해 작성한 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - switch(조건내용){ 실행 내용 } 으로 작성 된다. - switch문은 위에서 아래로 동작한다. - switch란 뜻에 맞게 조건 내용의 결과값에 맞춰 작동한다. - 각 case(조건 결과.......

C# - 반복문(for) [내부링크]

C# - 반복문(for) - 조건문은 특정 조건에 따라 한번 출력되는 것과 달리 특정 조건에 따라 반복해서 출력할 수 있는 방법이 있는데, 그걸 반복문이라고 한다. - 반복문의 주 내용은 시작점(조건 시작 위치), 분기점(조건내용), 종료(조건 끝)이며 이번 글은 C#에서의 반복문을 다루고자 한다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - for(초기문 ; 조건문 ; 증감문){ 실.......

C# - 반복문(while, do-while) [내부링크]

C# - 반복문(while, do-while) - 반복문의 for문과 별개로, 초기문, 조건문, 증감문을 설정할 필요 없이, 그저 조건문에 맞춰 실행되는 영역인 while문과 do-while문을 다뤄보고자 한다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - while문은 아래와 같이 작성된다. while(조건내용){ 실행 내용 } - do-while문은 아래와 같이 작성된다. do{ 실행 내용 }(조건 내용) - while문.......

C# - 배열 [내부링크]

C# - 배열 - 배열이란, 똑같은 물건을 한꺼번에 묶은 물건이라고 보면 이해하기 쉽다. - 예로, 계란 한판을 들 때, 우린 계란 30개를 &#x27;한 판&#x27;이라고 한다. 똑같은 양계장에서 똑같은 달걀을 30개를 담고 있는 &#x27;계란 한 판&#x27;을 말하듯이 이 한 판이라는것이 배열과 동일하다. - 이번 글은 C#에서의 배열을 다루고자 한다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 생성 및 실행 절차 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 - 배열은 자료형[] 배열이름 &#x3D; new 자료형[크기값]; 으로 작성한다. - 배열이름[순번] &#x3D; 배열값; 으로 작성하여 값을 넣을 수.......

C# - 객체 지향 프로그래밍 [내부링크]

C# - 객체 지향 프로그래밍 - 객체를 Object라고 부르며, 특정 물건, 어느 물건과 같은 사물을 의미한다. - 객체 지향 프로그래밍을 쉽게 설명하자면, 우리가 물건을 만들 때 물건에 필요한 재료를 조합하여 제조하듯이, 각 요소를 혼합하여 만드는 프로그래밍이라고 볼 수 있다. - 우리가 집을 만들때 땅을 사고, 그 위에 기둥, 시멘트 등을 쌓아 집을 만드듯이, 여러 사물을 가지고 집이란 객체를 만들어지는 것이다. - 이처럼 객체 지향 프로그래밍이 있지만, 그와 다른 절차를 이행하여 코드를 실행하는 절차 지향 프로그래밍 방식이 있다. - C#은 객체 지향 프로그래밍 방식이며, 절차지향 프로그래밍 방식과 달리 특정 코드를 모듈화(장치.......

C# - 캡슐화 [내부링크]

C# - 캡슐화 - 대부분 병원에서 처방전을 갖고 약국에서 처방받아 약을 먹을 때 캡슐 성분과 배합법을 정확히 알지 않고 그저 약의 효능을 믿고 먹는 것을 볼 수 있다. - 개발자가 특정 기능을 구현할 때, 기능 구현 코드를 그대로 사용하여 외부로부터 노출되면 그만큼 위험한게 없는데, 캡슐화는 코드가 작성된 내용을 외부로부터 감출 때 사용하는 방식이며 보안성이 좋다. - 캡슐화는 기능과 관련성 있는 내용을 한 캡슐에 담아 사용하는 것과 같다. 우리가 약을 먹을 때 효능만 믿고 먹듯이 캡슐화 내용만 믿고 그대로 사용하는것과 같다. - 캡슐화는 코드 내용을 모듈로 사용하면서 코드를 재사용하고 유지보수에 좋다.

질문하는 삶 : 살면서 한 번쯤은 짚고 넘어가야 할 것들 독서 후기 [내부링크]

질문하는 삶 : 살면서 한 번쯤은 짚고 넘어가야 할 것들 - 해당 책은 노원정보도서관에서 대여하여 읽은 책이다. - 기본적으로 내용은 자신의 경험을 시작으로 옛날 역사적으로 있던 일과 비슷한 접점을 매치하여 이야기를 풀어내는 책으로, 가볍게 읽는데 부담 없는 책이다. - 개인적으로 느낀 점은 책 제목과 동일하게 질문하는 삶을 갖고 읽는 이의 생각 스펙트럼을 넓히는 걸 유도하는 것처럼 보이기도 하나, 어떻게 보면 결과가 좁혀지지 않고 나무에서 넓혀지는 나뭇가지처럼 점차 생각만 늘어나는 느낌을 받게 되었다. - 현재 자신이 불안정하고 결단을 내려야 하거나, 어떤 행동을 취할줄 모를 때 이 책을 생각을 넓히는 데 중점을 가지.......

C# - 프로젝트 생성 [내부링크]

C# - 프로젝트 생성 - Visual Studio 2019(이하 VS 2019) IDE에서 생성 및 실행하는 글입니다. - 이번 글은 C# 프로젝트를 만든 뒤 실행하는걸 다뤄보고자 한다. - 현재 사용할 VS 2019 설치 절차를 다룬 글이니, 설치가 안되신 분들은 참고하시길 바랍니다. * Windows Form app(.NET Framework) 프로젝트 생성 시 1. VS 2019에서 새 프로젝트를 만들기 클릭 2. 사용 언어를 C#으로 선택한 다음 windows를 검색창에 작성하여 Windows Form 앱(.NET Framework)을 선택, 다음 클릭 3. 프로젝트 이름, 프로젝트 위치, 솔루션 이름 아래 체크박스를 체크한 뒤 만들기 클릭 4. 프로젝트가 생성된 걸 확인할 수 있다. - 여기서 Form1.cs[디자인]은 폼 기.......

C# - 프로젝트 실행 [내부링크]

C# - 프로젝트 실행 - Visual Studio 2019(이하 VS 2019) IDE에서 프로젝트를 실행하는 글입니다. - 이전 글에서 다룬 프로젝트 중 Windows Form 앱(.NET Framework) 프로젝트를 실행하고자 한다. - form 앱은 좀 더 UI 를 다루는데 익숙한 경우 매우 손쉽게 다룰 수 있다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 프로젝트 실행 절차 1. 프로젝트 좌측의 도구상자 탭 클릭한 다음 버튼과 라벨을 폼 안에 만들어 놓자 2. 만든 버튼이나 라벨을 클릭하면 우측 하단, 속성창에 해당 개체에 대한 속성 내용이 뜨는데, 라벨 label1과 버튼 button1의 TEXT를 바꿔주자(이름은 속성에서 디자인의 name에 서술되어 있다.) * joonb.......

C# - 기본 자료형 [내부링크]

C# - 기본 자료형 - 자료형, 개발을 하는 사람이라면 한번쯤은 들어본 말이라고 생각한다. - 이번 글은 C#에서 사용하는 자료형을 다뤄보기 위해 작성한 글이다. - VS 2019의 Console Application 프로젝트에서 실행하는 글이다. Console Application 프로젝트 생성 방법은 아래 글을 참조하시길 바랍니다. 실행환경 - OS : Windows 10 64bit - IDE : Visual Studio 2019 기본 자료형 설명 기본 자료형 선언 1. VS 2019에서 Console Application 프로젝트 생성 후, 아래와 같이 작성 2. ctrl + f5를 눌러 실행한 결과 - 논리형인 bool같은 경우 boolean도 선언이 되는 걸 확인하였다. - 자료형의 첫글자가 소문자여도 동작하는 걸 볼 수 있었음

자바 기초 39 - Stream [내부링크]

자바 기초 39 - Stream - Stream(이하 스트림) 이전에는 Collection 인스턴스이나 배열 인스턴스를 다룰 때 for문이나 Iterator를 이용해서 데이터를 담고 원하는 결과를 얻었지만, 코드의 질이 떨어지고, 양이 많아지는 단점이 있었다. - Stream을 통해 배열과 컬렉션 인스턴스를 다룰 때 자주 쓰는 메서드와 함께 데이터를 추상화하여 코드의 재사용성을 높일 수 있었다. - 또한 병렬 처리가 가능하며, 데이터 소스를 변경하지 않고 일회용으로 사용되어 속도 개선과 함께 효율적이다. - 즉, 컬렉션이나 배열과 같은 인스턴스에서 원하는 값을 사용할 때 for문이나 iterator로 지저분해지는 코드를 간결화한 것 스트림 동작 순서 1. 스트림을 선.......

자바 기초 40 - 입출력(InputStream, OutputStream) [내부링크]

자바 기초 40 - 입출력(InputStream, OutputStream) - 사람은 언어나 몸짓을 통해 대화하듯이 컴퓨터와 대화하기 위해선 언어와 몸짓이 아닌, 데이터를 입력하고 출력해야한다. - 이전 글에서 stream을 다뤘을 때 컬렉션이나 배열과 같은 인스턴스에서 원하는 값을 사용할 때 간결화한다고 했지만, 이번 글에서는 다른 stream을 말하고자 한다. - 해당 입출력은 Java를 통해 정보를 입력하고, 입력과 관련된 InputStream과 출력과 관련된 OutputStream을 다뤄본다. 데이터를 주고 받는 Stream - 현재 글에서 얘기하는 Stream은 데이터를 주고 받는 연결 통로를 의미한다. - 우리가 물건을 차로 운반할 때, 길을 통해 차로 이동하듯이, 컴퓨터도 데.......

자바 기초 41 - 입출력(FileInputStream, FileOutputStream) [내부링크]

자바 기초 41 - 입출력(FileInputStream, FileOutputStream) - 위의 InputStream과 OutputStream과 달리 파일에 입출력을 하기 위한 스트림이다. FileInputStream, FileOutputStream 생성자 - 파일 입력 또는 출력을 수행하는 바이트기반 스트림이다. - 참고로, Stream이란 연결통로는 쓰면 다시 반납해야 하므로 쓴 뒤 close() 메서드를 실행해 주자

자바 기초 42 - 보조 스트림(BufferedInputStream, BufferedOutputStream) [내부링크]

자바 기초 42 - 보조 스트림(BufferedInputStream, BufferedOutputStream) - 보조 스트림이란 데이터를 지나다니게 하는 연결통로인 스트림을 보조한다. - 개인적으로 예를 들자면, 데이터 네트워크 방식인 3g에서 4g로 바꾼 느낌? - 보조 스트림을 쓰기 위해선, 조상인 InputStream과 OutputStream을 가지고 있어야한다. BufferedInputStream, BufferedOutputStream - 스트림의 입출력 효율을 높이기 위해 버퍼를 사용하는 보조스트림 - 기존의 스트림에서 봤듯이, 한 바이트씩 입출력을 하는게 아니라 버퍼를 이용하여 한번에 여러 바이트를 입출력하는 방식으로, 속도면에서 월등히 앞선다. BufferedInputStream 생성자 - 스트림에 데이터를 버.......

자바 기초 43 - 문자기반 스트림(Reader / Writer) [내부링크]

자바 기초 43 - 문자기반 스트림 - 바이트기반인 InputStream, OutputStream과 달리 문자 기반으로 작동한다. Reader / Writer - byte가 아닌 char를 사용하는 것 외엔 InputStream, OutputStream와 다른 것이 없이 스트림을 통해 읽고 쓰고 한다. Reader 메서드 Writer 메서드

자바 기초 44 - 문자기반 스트림(FileReader, FileWriter) [내부링크]

자바 기초 44 - 문자기반 스트림(FileReader, FileWriter) https://blog.naver.com/joonbread/222290486114 - 위의 FileInputStream, FileOutputStream의 바이트 기반과 달리 파일의 텍스트 데이터를 읽어 파일로 쓰는데 사용된다. - 위의 FileInputStream, FileOutputStream와 대부분 비슷하다. FileReader 생성자 FileReader 메서드 - FileReader는 java.io.Reader클래스와 java.io.OutputStreamReader 클래스를 상속받아 메서드를 사용한다. FileWriter 생성자 FileWriter 메서드 - FileWriter는 java.io.Writer클래스와 java.io.OutputStreamWriter클래스인 상위 클래스를 상속받아 메서드를 사용한다.

자바 기초 45 - 문자기반 보조스트림(BufferedReader, BufferedWriter) [내부링크]

자바 기초 45 - 문자기반 보조스트림(BufferedReader, BufferedWriter) - 보조 스트림이란 데이터를 지나다니게 하는 연결통로인 스트림을 보조한다. - 개인적으로 예를 들자면, 데이터 네트워크 방식인 3g에서 4g로 바꾼 느낌? - 보조 스트림을 쓰기 위해선, 입력 보조스트림일 경우 조상인 InputStreamReader 인스턴스를, 출력 보조 스트림일 경우 조상인 OutputStreamWriter를 인스턴스를 가지고 있어야한다. BufferedReader, BufferedWriter - 스트림의 입출력 효율을 높이기 위해 버퍼를 사용하는 보조스트림 - 기존에 다뤘던 BufferedInputStream, BufferedOutputStream과 달리 문자 기반인 보조 스트림이다. - 기존의 문자 스트림에서 봤.......

자바 기초 46 - 직렬화(Serialization) [내부링크]

자바 기초 46 - 직렬화(Serialization) - 직렬화(Serialization), 웹 관련 업무를 종사하신 분이라면 한번쯤은 들어본 말이 아닐까? 필자는 자바스크립트를 통해 듣게 됬다. - 개인적으로 이해한 직렬화(Serialization)는 어떤 객체를 어느곳에 전송할 때 사용하는 걸로 알고 쓰면서 데이터를 한번에 보낼 수 있으니까 굳이 이걸 왜 할까 의문이 생긴적은 딱히 없었다. 직렬화 사용 이유 - 데이터를 저장하거나, 네트워크에서 통신할 때, 특정 객체를 보낸다고할 때 사용하는 데이터의 값 형식 데이터(직접 값을 가지고 있으며, 접근이 가능한 데이터)만 사용가능하다. - 객체를 예시로 들면, 객체에는 인스턴스 변수가 있지만, 메서드는 존재하.......

Visual Studio Community 2019 다운로드 [내부링크]

Visual Studio Community 2019 다운로드 - Visual Studio Community 2019 설치를 다루는 글입니다. - 가급적 공간을 넉넉히 만든 상황에서 다운로드합시다. * 설치환경 - OS : Windows 10 64bit Visual Studio Community 2019 설치 절차 1. 아래의 URL로 이동하여 그림과 같이 Visual Studio 다운로드 눌러주자 - 보통 Community버전만 써도 왠만한건 다 사용할 수 있다. 2. 계속 클릭 3. 다운로드 절차 진행 중.. 4. 준비된 항목과 동시에 어떤걸 설치할 지 선택할 수 있다. - 필자는 Visual Studio Community 2019로 C#을 공부하기 위해 설치 - 기본적으로 C#을 공부할꺼면 .NET 데스크톱 개발과 유니버셜 Windows 플랫폼 개발만 선택하길 추천.......

자바 기초 33 - 형식화 클래스 [내부링크]

Java - 형식화 클래스 - 패턴을 통해 입력값을 원하는 형식으로 사용하는 방법 - 입력한 숫자 문자열을 원하는 숫자, 날짜, 선택, 메시지 형식 등.. 여러 방식으로 변환할 수 있도록 하는 클래스가 있다. - 필자는 주로 사용할만한 숫자와 날짜 형식화에 대해 다루고자 한다. 1. DecimalFormat(숫자 형식화) - 숫자를 형식화할 수 있게 만든 클래스이다. - 입력한 텍스트 데이터를 패턴에 의해 숫자로 변환하는 것도 가능하다. - DacimalFormat 인스턴스를 출력 패턴에 맞춰 숫자 문자열이 출력된다. DecimalFormat 예제 * 결과 2. SimpleDateFormat(날짜 형식화) - 날짜를 형식화할 수 있게 만든 클래스이다. - Date인스턴스를 출력 패턴에 맞춰.......

자바 기초 34 - Stack, Queue [내부링크]

자바 기초 34 - Stack, Queue - 이전 글에서 다루지 않은 Stack(이하 스택)과 Queue(이하 큐)를 다루는 글이다. Stack, Queue란? - Stack : 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO(후입선출) 구조 - 스택은 후입선출 구조로 뒤에서 실행됬던 내용을 다시 되돌리는데 주로 사용된다. - 스택은 순차적으로 데이터를 삭제하는 방식이므로, ArrayList에 사용하면 적합 - 스택 활용 예 : 웹 브라우저 뒤로 가기, 실행 취소, 역순 문자열 만들기 등 - 후입선출의 구조 중 예시로 특정 바구니에 물품을 담은 뒤 꺼낼 때 맨 위부터 꺼낸다고 볼 수 있다. - Queue : 처음 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(선입선출) 구조 - 큐.......

자바 기초 35 - Generics [내부링크]

자바 기초 35 - Generics - 최근 List 컬렉션에서 List&#60;?&#62;란 것을 봤는데, 이게 잘못 본게 아니라 자바에서 이해하기 어려운 Generic이란 것을 알게되어 조금 다뤄보고자 한다. - Generic(이하 제네릭) : 다양한 타입의 객체를 다룰 때 타입 체크를 해주는 기능 - ArrayList를 예로 들 때 다양한 타입의 객체를 담을수 있지만, 일반적으로 String이나 해당 클래스 객체만 담을 수 있도록 작성한 뒤 다시 꺼낼 때 타입 체크와 형변환을 하는 경우가 있는데, 이를 해결해준다. - 임의의 참조형 타입을 작성한 뒤, 해당 참조형 타입에 걸맞춰 사용하는 방식이다. 제네릭을 사용하는 이유 1. 원하지 않는 타입의 객체를 포함되지 않게 하기(타.......

자바 기초 36 - enum [내부링크]

자바 - enum - 같은 타입의 상수들의 집합이다. - JDK1.5부터 추가되었다. - 상수 값이 변경되면 다시 컴파일 해야하는 단점을 보완한 클래스 - 컴파일 시 정의되지 않은 상수 값을 할당할 때 컴파일 에러가 나오지 않는 문제점을 enum을 통해 고칠 수 있게 됨 - enum과 enum을 사용하지 않은 상수를 실행 시 어떤 결과가 나오는지에 대해 다뤄보고자 한다. enum 예제 1. enum과 상관없는 상수값 설정 - 결과 2. enum을 통해 상수값 설정 - 결과 - 위의 결과를 보면 원래 설정된 상수가 아니여도 타입이 같다면 설정된 값과 상관없이 되는 것을 볼 수 있지만, enum을 통해 설정된 값이 아니면 에러가 출력되는 걸 볼 수 있다.

자바 기초 37 - Annotation [내부링크]

자바 기초 37 - Annotation - 기존 사용되던 Annotation 인터페이스의 소스코드는 주석 안에 소스코드의 설명 정보를 작성했었는데, 이를 응용한 기술이다. - 프로그램에게 정보를 주되, 프로그래밍 언어에 영향을 주지 않는다. - 컴파일러는 Annotation을 준수하며 동작한다. - 현 시대에 Annotation은 IOC 컨테이너인 스프링에서 자주 사용한다. Annotation 종류 - 오버라이딩 시 컴파일러가 실행한 오버라이딩 메서드명이 틀려도 틀린 것이 맞는지 확인하지 못하지만, @Override을 붙인 메서드가 반드시 있는지 확인한 뒤 없으면 에러메시지를 출력한다. - @Deprecated는 이전 버전에서 개선되거나, 새로운 기능이 추가되며 대체된게 나오면, .......

자바 기초 38 - 람다식 [내부링크]

자바 기초 38 - 람다식 - 메서드를 하나의 식으로 표현한 것으로, 함수형 언어를 사용할 수 있게 되었다. - JDK 1.8부터 추가되었으며, 객체지향에서는 함수가 아닌 메서드라는 특정 클래스에 속한 제약을 풀 수 있게 되었다. - 소위 &#x27;익명 함수&#x27;로 불린다. - 람다식을 다루는 인터페이스를 &#x27;함수형 인터페이스&#x27;라고 부른다. 람다식의 작성 방법 1. 메서드명과 반환타입 제거 2. 매개변수 선언부( 매개변수 1, 매개변수2 )와 실행 문장( { 실행 내용 } ) 사이에 &#x27;-&#62;&#x27;를 추가한다. 람다식 주의 사항 1. 람다식 작성 시 매개변수 선언부의 매개변수의 타입 생략이 가능하지만, 어느 하나 타입만 생략하는 것은 불.......

Java - secure coding(시큐어 코딩) [내부링크]

Java - secure coding(시큐어 코딩) - 흔히 개발자가 소프트웨어(이하 SW)를 개발할 때 보안의 헛점으로 보여진 보안 취약점을 없애고자 하는 코딩 방법이다.- 간단히 말해서 개발 코드에서 보안 위협이 될 수 있는 부분을 없애는 보안 활동 - 행정안전부에서 주최한 &#x27;SW 개발보안 관련 가이드&#x27;에 따라 2012년 12월부터 &#x27;SW 개발보안&#x27; 의무제로부터 생겨난 코딩 방법이다.- 전자정부 프레임워크 표준 지식과 더불어 SW개발 보안을 준수하는 개발자를 목표로 생겨난 현상이라고 볼 수 있다.SW 개발보안 - 보안을 고려하여 기능 설계부터 구현 까지의 모든 흐름을 의미 * SW 개발생명 주기는 다음과 같다.1. 요구.......

Java - secure coding(입력 데이터 검증 및 표현) [내부링크]

Java - secure coding(입력 데이터 검증 및 표현)- secure coding중 첫 번째인 입력 데이터 검증 및 표현을 다루는 글이다.입력 데이터 검증 및 표현- 프로그램 입력값에 대해 적절하지 않은 검증과 잘못된 형식지정으로 인해 발생할 수 있는 보안 약점을 의미한다.- 행안부의 코딩가이드에 명시된 입력 데이터 검증 및 표현의 보안 약점은 26가지- SQL 삽입, 자원 삽입, 크로스사이트 스크립트 등이 포함되어 있기에 간단한 예제를 작성하고자 한다.1)SQL 삽입 보안 약점과 대처 방안- DB와 연동된 웹 애플리케이션에서 입력한 데이터(SQL 문)에 대해 유효성 검증을 하지 않을 시 발생할 수 있는 보안약점을 의미한다.- 실행 시 쿼.......

Java - secure coding(보안 기능) [내부링크]

Java - secure coding(보안 기능)- 보안 기능을 제대로 수행하지 못할 경우 발생하는 약점이다.- secure coding중 두 번째인 보안 기능을 다루는 글이다.- 부적절한 인가, 중요정보 평문 저장(또는 전송)에 대해 다루고자 한다.보안 기능- 행안부의 코딩가이드에 명시된 입력 보안 기능의 보안 약점은 24가지1)부적절한 인가와 대처 방안- 소프트웨어의 모든 실행 경로에서 접근 제어와 관련된 검사를 완전히 못한 경우, 공격자가 헛점을 파고들어 정보를 추출해 갈 수 있는 보안 약점이다.1-1. 응용 프로그램이 제공한 정보와 기능을 역할에 따라 배분하여 공격자에게 노출되는 부분을 줄이는 방법 - 보안 인증을 프로그램 설정인.......

Java - secure coding(시간 및 상태) [내부링크]

Java - secure coding(시간 및 상태)- secure coding중 세 번째인 시간 및 상태를 다루는 글이다.- 행안부의 코딩가이드에 명시된 입력 보안 기능의 보안 약점은 7가지- 제어문을 쓰지 않거나 경쟁조건 중 검사시점과 사용시점에 대해 발생할 보안 약점을 다루고자 한다.시간 및 상태- 병렬 시스템과, 하나 이상의 프로세스가 동작하는 환경에서 시간과 상태를 잘못 관리하여 발생하는 보안 약점을 의미한다.1) 제어문을 사용하지 않는 재귀함수와 대처 방안- 재귀의 순환횟수를 제어하지 못해 자원을 과다 사용할 경우 정상적인 서비스를 제공할 수 없는 것에 대한 약점을 의미한다.1. 모든 재귀 호출을 조건문, 반복문 블럭 안에서.......

Java - secure coding(에러처리) [내부링크]

Java - secure coding(에러처리)- secure coding중 네 번째인 에러처리를 다루는 글이다.- 행안부의 코딩가이드에 명시된 에러처리 보안 약점은 4개이다.- 오류메시지로 인한 정보누출, 취약한 패스워드 요구조건을 다루고자 한다.에러처리- 정상/비정상 에러 발생에 대해 대비해야하고 에러처리 과정 중에 발생할 보안 약점을 의미한다.1) 오류메시지의 최소 정보 포함과 대처방안- 에러를 불충분하게 처리하거나, 에러 정보에 과도한 정보(응용프로그램이 사용자 정보와 사용자의 실행환경에 대한 민감한 정보 포함)가 많을 경우 이를 공격자가 사용할 수 있는 보안 취약점이 존재한다.- 사용자 정보를 포함시킨 에러메시지로 인.......

Java - secure coding(코드오류) [내부링크]

Java - secure coding(코드오류)- secure coding중 다섯 번째인 코드오류를 다루는 글이다.- 행안부의 코딩가이드에 명시된 코드오류 보안 약점은 7개이다.- NULL 포인터 역참조, 부적절한 자원 해제를 다루고자 한다.코드오류- 프로그램을 작성한 이후에도 해당 프로그램의 코드의 품질은 일정 수준을 유지해야 하는데, 코드가 복잡할 경우 발생하는 관리, 유지보수, 안전성 위협 등으로 인한 보안 약점을 의미한다.1) Null 포인터 역참조- 간단히 말해서 사용 객체가 Null이 될 수 없는 조건을 의도적으로 위반하여 발생된 예외 사항을 사용하는 보안 약점이다. 1-1. Null이 될 수 있는 래퍼런스는 참조하기 전에 Null값인지 검사.......

Java - secure coding(API 오용) [내부링크]

Java - secure coding(API 오용)- secure coding중 일곱 번째인 API오용을 다루는 글이다.- 행안부의 코딩가이드에 명시된 API오용 보안 약점은 7개이다.- DNS Lookup에 의존한 보안결정, NULL 매개변수 미 조사에 대해 다룬다.API 오용- API는 OS와 응용 프로그램간의 통신에 사용되는 언어, 메세지 형식 또는 규약으로 응용 프로그램 개발 시 개발 편리성 및 효율성을 제공하는 이점이 있다고 한다.- API의 알려진 취약점과 잘못된 사용은 편리성과 상관없이 효율적이지 않고 유지보수성이 저하되며 보안상 위협을 가할 수 있다.1) DNS Lookup에 의존한 보안결정과 대처 방안- 공격자가 DNS 엔트리를 속여 도메인명에 의존해서 보.......

Java - secure coding(캡슐화) [내부링크]

Java - secure coding(캡슐화)- secure coding중 여섯 번째인 캡슐화를 다루는 글이다.- 행안부의 코딩가이드에 명시된 캡슐화 보안 약점은 8개이다.- 제거되지 않고 남은 디버그 코드, 시스템 데이터 정보노출을 다루고자 한다.캡슐화- 소프트웨어에서 중요 정보, 기능을 은닉하는 방법에서 불충분한 캡슐화일 경우 데이터의 인가여부를 구분하지 못해 허용되지 않는 사용자간 데이터 누출이 가능해지는 보안 약점을 의미한다.- 접근제한자, 세션, 시스템 데이터 등의 잘못된 캡슐화에 의해 발생되는 약점이다.1) 제거되지 않고 남은 디버그 코드와 대처방안- 디버깅 목적으로 삽입된 코드가 개발 완료 이후에도 존재하여 실제 운.......

Spring - IoC(제어의 역전) 컨테이너 [내부링크]

Spring - IoC(제어의 역전) 컨테이너- IoC 방식으로 빈을 관리하는 컨테이너를 뜻한다.- 원하는 물건을 만들 때 필요한 여러 작은 물건을 결합할 수 있게 하는 공간- 사용된 부품에서 가장 왼쪽(A)이 가장 큰 부품, 가장 오른쪽(D)이 가장 작은 부품일 때 두 가지 결합 방법이 있다.- 우리가 모래성을 쌓는다고 할 때 작은 모래성이 점점 커지면서 큰 모래성이 되는 것과 같이, &#x27;가&#x27;와 같은 경우는 A, B, C, D가 하나로 만들어진 경우(A가 B를 만들고, B가 C를 만들고, 개발자가 직접 객체를 생성하고 제거하고 사용하는 방법)이다.- 분해한 총기를 다시 조립할 때 작은 거부터 큰 거로 조립하는 것처럼 &#x27;나&#x27;와 같.......

Spring - DI(의존성 주입) [내부링크]

Spring - DI(의존성 주입)- 위의 내용을 먼저 보고 오면 이해하기 쉽다.(글 몇줄 안됨)- DI(Dependency Injection)를 직역하면 &#x27;의존성 주입&#x27;이라고 부른다. - 핸드폰이 일체형과 조립형이 있을 때(현재는 대부분 일체형이다..) 일체형은 핸드폰 하나에 배터리와 기계 모든것이 합쳐진 제품이지만, 조립형은 핸드폰 하나에 배터리를 쉽게 바꿔낄 수 있는데, DI는 조립방식에 해당한다. DI(의존성 주입) 장점1. 재사용성이 높아지고 코드가 간결하다.2. 종속성을 낮춘다.3. 결합도가 낮아 유연성과 확장성이 높다.DI(의존성 주입)의 방법 1. Setter 주입- 클래스의 setter method를 이용하는 방법2. Constructor 주입- 클래스의.......

Spring - AOP(관점 지향 프로그래밍) [내부링크]

Spring - AOP(관점 지향 프로그래밍)- 관점이란 뜻에 걸맞게 어떤 내용을 관찰할 때 핵심과 공통을 나눠서 보는 걸 지향한 프로그래밍이란 뜻(특정 대상에 대해 생각이 다르다는 뜻이 아님)- 특정 모듈을 만든다고 할 때, 각각 개인이 만드는 모듈을 프로그램이 동작하는 핵심 비즈니스 로직이라고 할 때, AOP는 핵심 비즈니스 로직을 제외한 나머지 로직을 부분적으로 나눠서 모듈화하는 것- 어떻게 조금 비틀어 보자면 쓰기는 귀찮지만 어디에서든 무조건 실행하는 것으로 대충 이해하면 쉽다.- 아래와 같이 핵심 비즈니스 로직은 핵심 관심, 공통 사용 로직은 횡단 관심으로 이해하기 쉬우며 물건 / 고객 / 금융 관리는 핵심 관심이며.......

Spring - Spring MVC Project 구조 [내부링크]

Spring - Spring MVC Project 구조 - Spring MVC 프로젝트의 구조를 공부하고자 한다.- 위의 그림대로 Spring MVC Project를 생성하면 아래와 같이 구성된다. 구조 설명

Spring - Maven Repository [내부링크]

Spring - Maven Repository- Spring MVC Project에서 Maven으로 라이브러리를 다운 받는 방법- 기존에는 개발에 필요한 라이브러리를 프로그래머가 직접 프로젝트에 추가하였지만, 원하는 라이브러리를 pom.xml에 끌어다 씀으로써 추가할 수 있다.Maven Repository 예제1. 먼저 아래의 사이트에 접속, 원하는 라이브러리를 검색하자- 필자는 ojdbc6를 검색한 다음 사용하고자 한다.- 3번째 Ojdbc6을 선택하기 2. Ojdbc6을 누르면 아래와 같이 뜨는데 여기서 11.2.0.3 버전을 눌러주자3. 그럼 누른 버전에 맞춰 저장소, 업데이트 날짜, 파일, 버전, maven등의 정보가 나온다. - Maven의 탭 안 쪽 내용을 마우스 클릭 하면 클립 보드에.......

Spring - root-conxext.xml [내부링크]

Spring - root-conxext.xml- 스프링 MVC 프로젝트 구조 설명에서 봤듯이, 스프링 설정 파일을 의미한다.root-context.xml 파일 구조 * 위치는 아래 사진과 같다.* 내용- Services, Repositories(DAO), DB 등, 비즈니스 로직과 관련된 내용을 설정한다.- 흔히 Java단에서 쓰는 Bean을 여기서 설정한다고 보면 된다.

Spring - servlet-context.xml [내부링크]

Spring - servlet-context.xml- 스프링 MVC 프로젝트 구조 설명에서 봤듯이, 스프링 설정 파일을 의미한다.servlet-context.xml 파일 구조* 위치는 아래 사진과 같다.* 내용- 이 글을 작성하며 servlet과 JSP를 같이 쓰는지에 대해 필자는 알고 싶어졌다.- JSP에서 서블릿의 HTML 작성, 출력하는데 재 컴파일해야하는 문제를 보완하기 위해 나왔다. 왜 servlet을 쓸까? JSP만 쓰면 되는게 아닐까?- 답은 간단하다. JSP가 servlet을 보완해서 만든 만큼 servlet기반이기 때문에, JSP가 servlet의 단점인 HTML를 다루는데 편하게 해주지만, servlet은 쓰레드와 자바기반이기 때문에 웹 애플리케이션 운영에 효율적이다.- 효율적인 웹 애.......

Spring - web.xml [내부링크]

Spring - web.xml- 스프링 MVC 프로젝트 구조 설명에서 봤듯이, WAS(웹 애플리케이션 서버)의 설정을 작성하는 파일이다.web.xml 파일 구조* 위치는 아래 사진과 같다.* 내용- 웹 애플리케이션의 구성과 참조한 웹 서버의 웹 요청 처리 방식을 기술한 문서- 브라우저가 서블릿 페이지에 접근하기 위해선, 웹 애플리케이션 서버에 요청한 값에 맞는 값을 받아내는데, web.xml은 경로, 요청 처리하는 서블릿 사이의 매핑 등을 정의한다.

Spring - pom.xml [내부링크]

Spring - pom.xml- 스프링 MVC 프로젝트 구조 설명에서 봤듯이, Maven 설정 파일이다.pom.xml 파일 구조* 위치는 아래 사진과 같다.* 내용- 별 달리 기술할 게 없다. - properties : 해당 프로젝트의 프로퍼티를 작성한다.- repository : maven으로 다운받은 라이브러리의 저장소를 의미한다.* dependency- dependency : maven으로 다운받을 라이브러리를 작성한다.* build- build : update maven을 할 때 빌드하는 내용을 작성한다.- plugin : 말 그대로 플러그인을 의미한다.

Spring - Spring / MyBatis / Oracle 연동하여 회원정보관리 - 회원정보 수정 / 삭제 (log4j.xml, BootStrap v4.4.1 사용) [내부링크]

*** Spring Framework / MyBatis / Oracle을 연동하여 회원정보 수정/ 삭제- Spring Framework / MyBatis / Oracle를 연동하여 이전 내용에 이어 회원정보 수정 / 삭제를 구현한다.- 이전 내용에 이어서 하기 때문에 필요한 항목은 따로 확인하시길 바랍니다.- 부트스트랩은 지우셔도 되지만, 필요하시다면 회원가입 설명 사이트에 설치 방법 작성되어 있습니다. * 로그인, 회원목록(select id,pw || select memberlist )* 회원가입 (insert member)- 부트스트랩 내용 있습니다.** 준비사항 java- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING V.......

Java - Spring_mybatis_oracle연동_로그인 / 회원정보 관리(기본 기능 구현 예시) [내부링크]

Java - Spring_mybatis_oracle연동_로그인 / 회원정보 관리(기능 구현 예시)- 유효성 검사 x인 통합본- 말 그대로 기본 기능 구현을 목표로 두었기 때문에, 해당 내용은 부실하다.준비사항- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- Jquery : 3.5.1 - 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.* DBMS - 오라클 * 개발도구 - STS4* JDK - 1.8* APACHE-TOMCAT 모든 버전(버전 - bin - 원하는 버전 선택)통합본 github

Vue.js - 뷰 라우터 [내부링크]

Vue.js - 뷰 라우터- 뷰에서 라우팅 기능(웹 페이지 간 이동 방법)을 구현하도록 지원하는 공식 라이브러리- 라우팅 기능을 쓰면 클라이언트의 요청에 따른 결과에 깜빡거림 없이 매끄럽게 화면을 전환할 수 있다.뷰 라우터 태그 및 설명뷰 라우터 태그 예제1. 한 화면에 단일 컴포넌트 적용 * 결과(세번째 컴포넌트로 이동 클릭 시)- 위의 url에 #/third가 추가된걸 확인할 수 있다.2. Nested Router- 라우터로 이동 시 최소 2개 이상의 컴포넌트를 화면에 출력하는 것- 상/하위 컴포넌트 출력 가능 * 결과 - url이 없으니까 처음엔 아무것도 없음* 상위 컴포넌트 출력- #/ 뒤에 상위 컴포넌트 url(comp1)을 입력해보자- .......

Vue.js - 뷰 템플릿 [내부링크]

Vue.js - 뷰 템플릿- 뷰 템플릿이란, HTML, CSS 등의 마크업 속성과 뷰 인스턴스에서 정의한 데이터 및 로직들을 연결한 다음 사용자가 브라우저에서 HTML형식으로 볼 수 있게 하는 속성이다.- 간단히 보면 마크업 속성에 js내용을 덧붙인 느낌인거 같다.(그래서 Vue.js가 html, css, js를 합친 느낌?)- 템플릿 속성은 사용자가 볼 수 없는 라이브러리 내부에서 template속성에서 정의한 마크업 + 뷰 데이터를 가상 돔 기반의 render() 함수로 변환하는데, 변환된 render() 함수는 최종적으로 사용자가 볼 수 있게 화면을 그린다.템플릿 속성 사용 방법1. ES5에서 뷰 인스턴스의 template 속성 활용* template속성을 사용한 경우와 사용하.......

Vue.js - Axios(액시오스) [내부링크]

Vue.js - Axios(액시오스)- Vue에서 사용되는 HTTP 통신 라이브러리- Promise(서버에 데이터를 요청하여 받아오는 동작과 같은 비동기 로직 처리에 유용한 자바스크립트 객체) 기반의 API형식이 다양하게 제공되어 별도의 로직을 구현할 필요 없이 간편하게 원하는 로직을 구현할 수 있다.Axios 설치1. 터미널에서 npm을 이용하여 설치하는 방법(ES6 기준)1-1. atom에서 터미널 패키지(platformio-ide-terminal)를 설치1-2. 터미널(ctrl + &#x60; 입력 시 터미널 생성)에 해당 명령어 입력 후 엔터- npm install --save axios2) CDN을 이용하는 방법- &#60;script src&#x3D;&#34;https://unpkg.com/axios/dist/axios.min.js&#34;&.......

Spring - 스프링이란? [내부링크]

Spring - 스프링이란?- Java언어를 기반으로 한 Java의 웹 프레임워크Spring의 주요 특징1. 경량 컨테이너로 크기와 부하의 측면에서 가벼워지고 자바 객체를 생성, 소멸같은 생명주기 관리와 스프링으로부터 필요한 객체를 얻어온다.2. IoC(제어의 역전)을 통해 개발자가 직접 객체를 관리하는 것이 아닌 스프링 컨테이너에서 직접 객체를 관리한다.3.DI(의존성 주입)을 통해 객체를 직접 생성하는 것이 아닌 외부에서 생성한 후 주입하는 것으로 모듈간의 결합도가 낮아지고 유연성이 높아진다.4. AOP(관점 지향 프로그래밍)라는, 여러 객체 공통 사용 기능(보안, 로깅, 트랜잭션 등)을 분리하여 관리(중복된 기능을 사용할 시 따로 호.......

Spring - 타일즈(Tiles) [내부링크]

Spring - 타일즈(Tiles)- 반복되는 부분들을 한 곳에서 관리할 수 있게 도와주는 템플릿 프레임워크이다.- 웹페이지에서 흔히 보는 상단, 하단 메뉴 뿐만 아니라 측면과 메인부분을 작성- 우리가 아는 JSP Include와 비슷하지만, Tiles는 레이아웃 템플릿 엔진으로 레이아웃을 구성하는데 좀 더 세분화되고 관리하기 쉬워 유지보수에 용이하다.- tiles에는 상속 기능이 있기때문에, 기존의 값을 참조하여 그대로 쓸 수 있다.- 2021.03.02 기준으로 3.0.8버전까지 나왔으며 더 이상 지원하지 않는다.타일즈(Tiles) 3.0.8 최소 요구 사항- JSTL 필수- JDK 1.7 이상- Servlet 2.5 이상( 2.4도 작동할 수 있음)- JSP 2.1이상( 2.0도 작동할.......

JQuery - 효과 및 애니메이션 메서드 [내부링크]

JQuery - 효과 및 애니메이션 메서드- HTML 요소에서 css를 좀 더 역동적이고 다양한 효과를 주는 방법- 애니메이션처럼 생동감 있는 화면을 구현할 수 있다.** 효과 애니메이션 메서드 종류 별 설명* 효과 메서드 * 효과 메서드 작성법(fadeTo() 제외)- 소요시간의 단위는 ms, 즉 1,000은 1초를 의미한다.- 가속도는 swing(시작, 끝은 느리게 중간은 빠르게-기본값)과 linear(일정 속도)가 있다.* fadeTo() 작성법- 소요시간의 단위는 ms, 즉 1,000은 1초를 의미한다.- fadeTo()는 다른것과 달리 0~1까지의 투명도 값을 설정 할 수 있는데, 1에 가까울 수록 선명하게 보인다.* animate() 작성법- 스타일 속성은 css에 작.......

Vue.js - 뷰 인스턴스 [내부링크]

Vue.js - 뷰 인스턴스- Vue로 화면 개발 시 필수적으로 생성해야 하는 기본 단위- 인스턴스는 객체를 소프트웨어에 실체화한것으로, 일반적으로 new 인스턴스명으로 선언하는데 객체를 메모리에 할당하는 것뷰 인스턴스의 옵션 속성- data의 바꿀 데이터명을 사용하여 값 변경이 가능하나, Object.freeze(바꿀 데이터명)을 사용하면 속성 값을 바꿀 수 없다.- computed는 getter함수와 같은 기능으로 사용되지만 사용에 따라 setter함수를 만들어 쓸 수 있다.(computed의 데이터명 안에 &#x27;get : function(){ getter내용 }, set : function(){ setter내용 }&#x27; 또는 &#x27;get() {내용}, set(바꿀값){내용}&#x27; 작성 )* comput.......

Vue.js - 뷰 컴포넌트 [내부링크]

Vue.js - 뷰 컴포넌트- 컴포넌트란 화면에 구성되는 특정 영역을 의미한다.- 미리 짜여진 컴포넌트로 일괄적인 패턴으로 개발하거나 재활용과 유지보수에 용이하다.- 특정 영역이란 설계적인 측면이 강조되며 부모 - 자식 구조를 따르고 분할 공간으로 사용되기에 안성맞춤인것 같다.(뿌리를 내리는 트리 구조)뷰 컴포넌트의 등록 방법- 컴포넌트 이름은 template 속성에서 사용할 HTML 태그 이름을 적어준다.- 컴포넌트 이름은 모두 소문자 또는 단어와 단어 사이를 &#x27;-&#x27;로 잇지 않아도 된다.1) 전역 컴포넌트 등록 방법- 뷰 컴포넌트에 내용을 가진 컴포넌트 이름을 설정한다.2) 지역 컴포넌트 등록 방법- Vue 객체에 c.......

Git - 최신 버전으로 Commit하기 [내부링크]

Git - 최신 버전으로 Commit하기- fetch를 통해 github에 등록된 데이터를 받아오고자 했으나, 위와 같이 commit이 모두 된 상태라고 뜬다. 아마 로컬 저장소의 내용과 차이가 없어서 그런듯 함- 필자는 로컬 저장소가 아닌 원격 저장소에 있는 최신버전을 commit하고자 하여 이 글을 작성개발환경 - OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipsegithub repository 최신 commit버전으로 강제 변경1. github에 연동된 프로젝트 파일 위치로 이동하여 Git Bash Here 클릭2. 필자와 같이 fetch를 할 때 master를 찾을 수 없는 경우 뜨는 현상- 원격 저장소 : origin 확인- master를 갖고오고자 했으나 remote 저장소는 origin.......

JavaScript - Cookie [내부링크]

*** JavaScript - Cookie- 사용자가 어떤 웹 사이트를 방문했을 때 남는 저장 기록 파일으로 사용자가...

JavaScript - ProtoType(프로토타입) [내부링크]

*** JavaScript - ProtoType(프로토타입)- 클래스 개념이 없는 자바스크립트에서 여러 함수를 등록하...

JQuery - 선택자 1(직접 선택자 / 인접 관계 선택자) [내부링크]

JQuery - 선택자- HTML 요소에서 CSS(정적 스타일)을 동적으로 적용할 수 있는 방법- 문서 객...

JQuery - 선택자 2(탐색 선택자 - 위치 탐색 / 속성 탐색) [내부링크]

JQuery - 선택자- HTML 요소에서 CSS(정적 스타일)을 동적으로 적용할 수 있는 방법- 문서 객...

JQuery - 객체 편집 메서드 [내부링크]

JQuery - 객체 편집 메서드- 객체를 복제, 새 객체를 생성, 원하는 위치에 선택한 요소를 삽입, 선택 요소 삭제, 추가 등.. 말 그대로 편집과 관련된 기능** 객체 편집 메서드 종류 별 사용법, 설명- 객체 편집 메서드인만큼 객체 요소에서 어떤 메서드를 사용하느냐에 따라 새 요소를 추가, 삭제하거나 객체 요소를 변경, 삭제 등 여러가지를 조작할 수 있다.- before / after 와 관련된 메서드를 사용하면 선택 요소의 근처에 새 요소를 추가할 수 있다.- clone은 복제하다란 뜻이 있듯이, form에서 입력란을 복제할 때 쓰는걸로 보인다. 말 그대로 block 영역이나 inline-block영역을 복제하는 느낌?- remove나 empty는 form의 seri.......

JQuery - 이벤트 등록 메서드 [내부링크]

JQuery - 이벤트 등록 메서드- 이벤트란, 특정 행동에 의해 발생되는 현상을 의미한다.- 말 그대로 우리가 컴퓨터나 모바일과 같은 전자 기기에서 데이터 입력하는 특정 행동에 따라 데이터를 출력하는 방법이다.- 이벤트 등록 메서드는 사용자의 예상된 행동을 기반으로 어떤 이벤트를 발생 시킬 지 설정하는 메서드와 같다.** 이벤트 등록 메서드 종류 별 설명- 마우스 이벤트는 보통 자식 요소와 관련되어 나눠진다.- mouseover()와 mouseenter()의 차이는 자식 요소 영역의 포함 유무(over - 자식영역 포함 / enter - 자식영역 미 포함)이다.- mouseout()과 mouseleave()의 차이는 자식 영역에 들어가 요소를 빠져나갈 때 감지 여.......

JQuery - 그룹 이벤트 등록 / 제거 메서드 [내부링크]

JQuery - 그룹 이벤트 등록 / 제거 메서드- HTML 요소에서 그룹 이벤트 등록 메서드를 통해 1:1의 이벤트 발생이 아닌, 1:n형식의 이벤트를 발생할 수 있도록 등록 할 수 있음- 그룹으로 진행되는 만큼 동적 생성, 복제된 요소에도 이벤트를 적용할 수 있다.(특정 이벤트에 의해 생성 또는 복제된 요소도 등록 이벤트가 적용된다는 뜻)- 이벤트 등록이 있으면, 제거도 있듯이 on / off, bind / unbind, delegate / undelegate으로 나뉜다.** 그룹 이벤트 등록 종류 별 사용법, 설명- on과 bind의 차이는 사실상 동적 요소에도 이벤트를 등록하느냐이며, 제이쿼리 1.7 이상을 쓸 경우 bind보다 on을 쓰도록 권장하고 있다.(bind는 사라.......

JQuery - AJAX [내부링크]

JQuery - AJAX- 자바스크립트에서 XML 데이터를 받기 위한 비동기 방식의 통신 기술- 비동기 방식이란, 서버에 신호를 보낸 후 응답 상태와 상관없이 다음 동작을 수행하는 것으로 필요 부분만 골라먹는 재미를 느낄 수 있다.- 자료 요청 &#62; 서버 컴퓨터 &#62; 자료 응답의 경로에서 페이지가 갱신되며 모두 완료되는 동안 클라이언트는 사용할 수 없는 게 동기 방식이다.- 클라이언트가 서버에 자료를 요청할 때 화면 전환 없이 요청 자료를 전송받는 것, 페이지 리로드가 필요 없다.- AJAX를 사용하기 위해선 웹 서버가 필요하다.** Ajax 장 / 단점 장점- HTML 화면에서 페이지 갱신 없이 DATA를 주고 받아 결과를 그대로 보.......

Vue.js - Vue.js 개발 환경 설정 [내부링크]

Vue.js - Vue.js 개발 환경 설정 개발 환경- OS : WINDOWS 10 64bit- IDE : ATOM 1.54.0 For 64-bit Windows 7 or laterVue.js - Vue.js 개발 환경 실습1-1. 아래 홈페이지로 이동1-2. Download를 클릭하여 다운로드받기1-3. ATOM Setup파일 실행1-4. Atom.exe 실행됨과 동시에 아이콘 생성- 우측 맨 위에 나온 내용은 url을 http://가 아닌 atom://으로 할지 선택하란 의미이며 torrent 다운로드 할때 앞에 marnet://이 있는 비슷한 맥락으로 http 프로토콜이 아닌 아톰 프로토콜을 사용하게 할 수 있는 부분이다.- atom 프로토콜을 쓰기 위해 나중에 바꿀 수 있으므로 yes를 눌러주자2-1. Atom theme 설정- File &#62; Settin.......

JQuery - 배열 관련 메서드 [내부링크]

JQuery - 배열 관련 메서드- HTML 문서 내의 배열 요소를 다루는 메서드- 다중 체크 요소의 데이터를 쓰거나 배열 데이터를 HTML 문서 객체 요소로 반복 출력하는 등.. 배열 데이터를 다루는데 주로 사용한다.- 배열 관련 메서드의 처음 시작은 0부터 시작하며, 배열에 저장된 데이터 뿐만 아니라, 배열에 저장된 문서 객체만큼 반복 실행 할 수 있다.** 배열 관련 메서드 종류 별 사용법, 설명

JQuery - 속성 조작 메서드 [내부링크]

JQuery - 속성 조작 메서드- 요소의 속성을 조작할 때 사용하는 메서드로 선택 요소에 속성을 바꾼다- 선택한 요소에 새 요소를 생성, 복사, 삭제, 변환을 할 수 있다.** 속성 조작 메서드 종류 별 사용법, 설명- 전반적으로 속성 값을 생성, 수정, 복사, 삭제하는 기능을 수행하는 만큼, 특정 행동에 따라 속성 값이 변환되는 용도에 주로 쓰이는 걸로 보인다.- 특히, attr()과 prop()는 속성명과 상태 속성명이라는 차이를 가지고 있는 만큼 attr()은 요소가 가지고 있는 정보(속성명 &#x3D;&#x27;정보&#x27;일 경우의 정보)와 prop()는 요소 상태의 활성화(버튼과 비슷한 맥락)쪽과 연관되어 있다.- class와 관련된 메서드는 특정 행.......

Vue.js - Vue.js란? [내부링크]

Vue.js란?- 웹 페이지 화면을 개발하기 위한 front-end framework이다.- Evan You가 만든 점진적 프레임워크로 2014년 2월에 공식으로 배포됬다.- 화면단 데이터 표현에 관한 기능을 중점적으로 지원하며, 프레임워크의 기능은 라우터, 상태 관리, 테스팅 등을 쉽게 결합할 수 있는 형태로도 제공된다.- 컨트롤러 대신 뷰 모델을 가지는 MVVM(Model - View - ViewModel)패턴 기반이다. Vue.js의 특징1. MVVM 패턴으로 화면의 요소를 제어하는 코드, 데이터 제어 로직을 분리하여 코드를 더 직관적으로 이해할 수 있으며, 유지보수하기 용이하다.2. 컴포넌트 기반의 프레임워크, 뷰의 컴포넌트를 조합하여 화면을 구성할 수 있다........

JQuery - 선택자 3(탐색 선택자 - 콘텐츠) [내부링크]

JQuery - 선택자- HTML 요소에서 CSS(정적 스타일)을 동적으로 적용할 수 있는 방법- 문서 객체 모델(DOM, Document Object Model)인 HTML문서 객체 구조에서 문서 객체를 선택하여 사용할 수 있다.- 문서 객체란, 우리가 HTML문서에서 보는 &#60;body&#62;, &#60;div&#62;, &#60;span&#62; 등의 태그를 의미한다.- 결국, 특정 태그를 선택해서 수정하거나 적용하는 용도로 사용하는 것** 탐색 선택자(콘텐츠) 종류 별 사용법, 설명- 배열 관련 메서드에 비해 선택 요소를 제외하거나 가져오는 만큼 데이터를 가져오는 것보다 css를 변형하는 용도로 쓰이는 것으로 보인다.- 쓴다면 쓰겠지만.. 배열 관련 메서드를 쓰는게 바람직해보.......

Spring - Spring Config Editor가 안 나올 경우 [내부링크]

- 현재 진행중인 프로젝트에서 root-context.xml과 servlet-context.xml파일이 xml파일로 되어 있어, namespace를 쓰려고 하는데..? namespace가 없다?* 다른 사람들의 내용은 파일 우클릭 - open with - others - spring config editor 클릭할 경우 되는 것을 봐야했는데.. 내가 찾는 건 2시간 넘게 안 보인다...(집단 지성의 힘이 여기서 끝나는줄 알았다.)- 분명 window - eclipse marketplace에서 spring을 설치하라고 해서 했는데 안된다.. 왜 안될까..?- 계속 찾아보니 구글링 결과 sts4 버전에 namespace는 없어서 3을 다운받으면 자연스레 생긴다고 한다. - 그래서 기존 스프링과 관련된 걸 다 uninstall 한 뒤 sts3 버전으.......

Spring - Spring / MyBatis / Oracle 연동하여 회원정보관리 - 로그인, 회원목록 (log4j.xml사용) [내부링크]

*** Spring Framework / MyBatis / Oracle을 연동하여 회원정보관리 - 로그인, 회원목록- Spring Framework / MyBatis / Oracle를 연동하여 로그인, 회원목록 구현을 목표로 둔다.** 준비사항 java- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.** 파일 구조(더 추가될 예정)1. Oracle 11g2. pom.xml (21.02.09 기준 ojdbc6 설정) 내용 추가* log4j.xml을 사용안할 경우 아래의 내용은 추가하지 않아도 됨3. log4j.xml(안할 경우 바로 4번으로 이동.......

Spring - Spring / MyBatis / Oracle 연동하여 회원정보관리 - 회원가입(log4j.xml, BootStrap v4.4.1 사용) [내부링크]

*** Spring Framework / MyBatis / Oracle을 연동하여 회원정보관리 - 회원가입- Spring Framework / MyBatis / Oracle를 연동하여 회원가입 구현을 목표로 둔다.** 준비사항 java- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.** 파일 구조(더 추가될 예정)1. Oracle 11g ( 로그인, 회원목록 글 수정사항)- 날짜를 사용하기 위해 to_date()로 문자열 변환하는데, format 환경 확인을 하자(중요하다. 필자는 이걸 통해 2시간을 넘게 날렸다.)- 이전 글.......

Spring - MyBatis - Oracle 연동 1 (Maven / root-context / mybatis-context, mapper / oracle table) [내부링크]

*** Spring - MyBatis 연동- 오늘은 Spring - MyBatis 연동에 대해 설명하고자 한다.** JDBC와 MyBatis 차이** 준비사항- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.* DBMS - 오라클 * 개발도구 - STS4* JDK - 1.8* APACHE-TOMCAT 모든 버전(버전 - bin - 원하는 버전 선택)** Spring - MyBatis 연동 1. Oracle DBMS의 Mybatis를 사용하기 위해 pom.xml에 Mybatis를 추가* POM.XML에 해당 dependency를 작성해주자2. MyBatis 설.......

DB(Oracle 기준) - Trigger(트리거) [내부링크]

*** Trigger(트리거)- 방아쇠와 같은 의미로, DB에서 특정 이벤트 발생 시 동작** 사용 이유1. DB테이블 생성 시 참조 무결성, 데이터 무결성 등의 복잡한 제약 조건을 생성하기 위해2. DB 테이블의 데이터가 생기는 작업에 대한 감시, 보완과 생긴 변화에 따라 필요한 다른 프로그램을 실행하는 경우3. 불필요한 트랜잭션 방지4. 컬럼 값 자동 생성5. 복잡한 뷰 생성* 작성법** 트리거 옵션 설명** 트리거 사용 시 주의사항- 트리거를 걸어놨기 때문에, DDL문장에 의해 변경될 가능성이 있다.- 트리거 내에서는 TCL을 사용할 수 없다.- 큰 테이블의 트리거는 수행속도에 영향을 미친다.

USB 디스크 인식 불가(포맷 오류) [내부링크]

*** USB 디스크 인식 불가(포맷 오류 및 DISK CLEAN 오류)- 이 글은 WINDOW10 부팅 USB를 만들기 위해 작성한 글이다.- 대부분 DISK리스트를 보고 포맷할 USB를 선택해 CLEAN하란 얘기만 있다. 하지만, 나처럼 안 된 사람들을 위해 글을 작성했다.1. CMD(관리자로 열기)창을 통해 입력- 이와 같이 CLEAN이 안됨2. 그 다음 포맷 유도하지만 당연히 안됨- 좌측(기본값)에서 우측(변경값)을 하려나, 용량을 알 수 없음이 뜬다.- 해당 디스크를 볼륨을 넣어도 포맷을 못함 드라이버는 있고 범용 직렬 버스 컨트롤러에서 보여도 안 되서 너무 화가 나지만, 계속 검색해본 결과 해당 아이템을 발견했다!3. SD Card Formmater 사용 - 아래의.......

Windows 10 usb 부팅 디스크 생성 [내부링크]

*** Windows 10 usb 부팅 디스크 생성 - 이 글은 Windows 10 usb 부팅 디스크 생성을 목표로 한다.- Windows 초기화를 하느니, 부팅디스크를 만들어서 설치하는게 좋다.** 필요사항- 반드시 OS설치할 PC를 백업해놓기(필수)- 포맷되어 있는 8GB 이상의 USB** 절차1. 먼저 포맷된 8GB 이상의 USB를 꽃아두자.- 참고로 아래와 같이 USB를 인식하지 못할 경우 아래의 링크를 참조하자2. 해당 홈페이지에 가서 지금 도구 다운로드 클릭 3. 해당 파일을 실행하여 다운로드하기- 동의 클릭 - 다음 클릭- 설치 버전 선택 후 다음 클릭- 우린 usb 부팅 디스크를 만들기 때문에 USB 플래시 드라이브 선택 후 다음 클릭- 부팅 디스크로.......

DB - Optimizer(옵티마이저) [내부링크]

*** Optimizer(옵티마이저)- SQL개발자가 SQL 실행계획을 수립하고 SQL을 실행하는 DBMS의 소프트웨어- SQL 실행계획은 SQL 성능에 아주 중요한 역할을 한다.** 특징 - 옵티마이저는 데이터 딕셔너리에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정한다.- 여러 실행계획 중에서 최저 비용을 가진 계획을 선택, SQL을 실행한다.- 즉, 효율적인 업무방안을 제시하여 SQL를 최적화 하는 점** 옵티마이저 종류1) 규칙 기반 옵티마이저(Heuristic Optimizer)- 미리 정해놓은 규칙에 맞춰 엑세스 경로를 평가, 실행계획을 선택- 엑세스 경로 별 인덱스 구조, 연산자, 조건절 형태를 중요시 한다.2) 비.......

SQL(Oracle 기준) - SYNONYM [내부링크]

*** SYNONYM- 오라클 객체(TABLE이나 SEQUENCE 등)에 대한 별칭(Alias)을 의미한다.- SYNONYM 사용자는 객체들의 소유자, 이름, 스키마를 알 수 없고 SYNONYM 이름으로 DML 문장을 실행하여 보안성이 좋다.- 긴 객체의 이름을 줄여 DB 사용자를 위해 SQL문을 단순화할 수 있다.- SYNONYM을 참조해서 사용할 경우 이름을 바꾸거나 이동할 때 SQL문에 사용할 SYNONYM만 다시 정의하면 수정할 필요 없이 사용할 수 있다.- 장점이 보안성, 편의성인 것 같다.(약간 캡슐화, 다형성이 보이는 건 기분탓이다.)** SYNONYM 종류- PUBLIC SYNONYM : 모든 사용자가 사용할 수 있으며 공유한다.- PRIVATE SYNONYM : 생성한 사용자(특정 사용자)만 사.......

Spring - MyBatis - Oracle 연동2(controller / DAO(impl) / DTO / Service(impl) / view(jsp) - 회원목록 출력 ) [내부링크]

*** Spring - MyBatis 연동 2(controller / DAO(impl) / DTO / Service(impl) / view(jsp) - 회원목록 출력 )- 이전의 내용에 이어서 Spring - MyBatis 연동한 다음, 내용을 출력하고자 한다** 준비사항- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.* DBMS - 오라클 * 개발도구 - STS4* JDK - 1.8* APACHE-TOMCAT 모든 버전(버전 - bin - 원하는 버전 선택)** Spring - MyBatis 연동 2(controller / DAO(impl) / DTO / Service(impl) / view(jsp.......

파이썬 기초 15 (bool) [내부링크]

*** bool- True(참), False(거짓)을 나타내는 자료형 - 대체로 자료형에서 빈값은 False로 나타낸다.** 자료형 bool 판별** bool 연산- bool 내장 함수를 사용(작성 : bool(판별할 값))- 참과 거짓을 판별할 수 있다.** bool 예제* 결과

파이썬 기초 16 (Package) [내부링크]

*** Package(패키지)- 파이썬 모듈을 디렉터리 구조(계층형)로 관리할 수 있게 만든 방법- 패키지 구조로 작성 하는 것이 협업과 유지 보수 면에서 좋다.** 개발 환경- OS : WINDOWS 10 64bit- 개발도구 : visual studio code 1.53.0- Python version : 3.8.7** 패키지 설치, 삭제 방법- 먼저, 패키지를 확인하기 위해 pip(패키지 라이브러리 관리 시스템)에 import한 패키지가 없는 것을 확인해야한다.1) 확인하는 방법은 간단하다 &#x27;pip list&#x27;를 입력, 2) 설치 방법- &#x27;pip install 패키지이름&#x27;을 통해 설치하기* numpy 패키지를 설치한 뒤 확인3) 삭제 방법- &#x27;pip uninstall 패키지이름&#x27;을 통해.......

SQL(Oracle 기준) - Window Function(윈도우 함수), FIRST_VALUE(), LAST_VALUE(), LAG(), LEAD() - 그룹 내 행 순서 함수 [내부링크]

*** Window Function- 행과 행간의 관계를 정의하는 함수- 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.- GROUP BY 구문과 같이 사용할 수 없다.- 중첩 사용은 불가능하지만, 서브쿼리에서 사용 가능하다.** WINDOW 함수 구조* 기본 작성 방법** WINDOWING 구조* BETWEEN 사용 / 미 사용 타입** 그룹 내 관련 함수** 그룹 내 행 순서 관련 함수- 그룹 내 행 순서를 지정할 수 있다.- 기준행에서부터 범위를 지정하여 특정 범위의 값을 가져오거나 위치에 따라 가져오는 값이 다르다.- SQL SERVER에서 지원하지 않는다.- FIRST_VALUE : 파티션 별 윈도우에서 가장 먼저 나온 값을 구할 수 있다.- LAST_VALUE : 파티션 별 윈도.......

SQL(Oracle 기준) - Window Function(윈도우 함수), CUME_DIST(), PERCENT_RANK(), NTILE(), RATIO_TO_REPORT() [내부링크]

*** Window Function- 행과 행간의 관계를 정의하는 함수- 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.- GROUP BY 구문과 같이 사용할 수 없다.- 중첩 사용은 불가능하지만, 서브쿼리에서 사용 가능하다.** WINDOW 함수 구조* 기본 작성 방법** WINDOWING 구조* BETWEEN 사용 / 미 사용 타입** 그룹 내 관련 함수그룹 내 비율 관련 함수** 그룹 내 비율 관련 함수- 말 그대로 그룹 내에서 찾고자 하는 값의 비율을 나타낸다.* CUME_DIST- 주어진 그룹에서 상대적인 누적 분포도 값을 반환한다.- 구하는 값보다 작거나 같은 값을 가진 ROW수를 총 ROW수로 나눈 값을 상대적으로 나타내며, 범위는 0보다 크고 1보다 작거나 같다.......

DB - Schema(스키마) [내부링크]

*** Schema- DB의 가장 기본적인 요소- 데이터들간의 논리적 구조 및 관계를 기술한 것- 개체(ENTITY), 속성(ATTRIBUTE), 관계(RELATIONSHIP), 제약 조건(CONSTRAINT) 등이 포함된 개념의 오브젝트- 사용자, 설계자, 개발자가 DB를 보는 관점에 따라 DB를 기술하고 이들간의 관계를 정의한 ANSI 표준인 3층 스키마(외부 / 개념 / 내부)가 있다.- 3층 스키마는 DB의 독립성을 확보하기 위한 방법이다.** Schema의 구조 내부 스키마- 개발자 관점에서 보는 DB의 물리적 저장 구조- 물리적 스키마로 불리며, 데이터 저장구조, 레코드 구조 등을 의미 외부 스키마 - 사용자 관점에서 보는 업무와 관련된 데이터 접근- 서브 스키마로 불리며.......

SQL(Oracle 기준) - Merge(병합) [내부링크]

*** Merge(병합)- 처리 대상 테이블과 목표 테이블의 조건에 따라 데이터를 수정, 등록, 삭제- 데이터가 존재하면 업데이트, 존재하지 않으면 입력을 하는 용도로 사용- ON 조건 &#62;&#62; 조건에 사용된 칼럼은 update가 불가능하다.- Oracle 9i부터 사용 가능하지만, delete는 오라클 10g버전부터 사용 가능하다.* 작성 방법** Merge(병합) 예제1. EMP 테이블과 비교할 타깃 테이블을 작성(EMP의 DEPTNO가 10인 데이터)한 다음 EMP_TEMP과 EMP를 비교, 데이터가 있을 시 급여 50% 인상 없으면 EMP테이블의 레코드를 타깃 테이블로 INSERT 한 값 출력- EMP_TEMP 테이블 생성CREATE TABLE EMP_TEMP NOLOGGING AS SELECT * FROM EMP WHERE DEPT.......

인프런(Inflearn) - 예제로 배우는 스프링 입문(개정판), 스프링 공부 1 [내부링크]

*** 백기선 개발자님의 스프링 사용 입문(수업 13개, 총 2시간 26분, 초급 수준, 무료, 스프링 부트 사용)- 정말 간단한 수업 내용으로, 스프링에서 제공하는 예제 PetClinic을 기반으로 수업 내용을 진행- 스프링이 낯선 사람들은 대부분 프로젝트 설정에서 애를 먹는 경우가 많지만, 해결할 시 가장 빠르게 수업 내용을 진행해나갈수 있음 - 기본에 충실한 내용이 바탕인만큼 정말 기초를 배우는 수업에 적합하며, 자바 기초 지식을 필요로 함- 메이븐으로 다운 받은 jar파일을 실행하는만큼 빠르게 실행할 수 있지만, 가끔 css가 깨지는 경우가 발생하므로 그땐 메이븐 재빌드를 하면 해결이 되는 것을 확인- 스프링 IOC, AOP, PSA .......

SQL(Oracle 기준) - PROCEDURE(프로시저) [내부링크]

*** PROCEDURE- PL/SQL 을 통해 만들어지고 특정 작업을 수행하는 프로그램- PL/SQL의 FUNCTION은 리턴값을 반환하지만, 프로시저는 지정된 작업을 수행한 이후에 반환여부를 선택할 수 있다.- 프로시저는 EXEC 또는 EXECUTE의 실행문을 통해 사용된다.- 처음 생성 시 컴파일으로 DB에 오브젝트로 저장되며 반복적으로 사용할 수 있고, 다시 컴파일을 할 필요가 없기에 재사용에 용이하다.* 생성 방법- 생성 시 사용 법- 삭제 방법** 프로시저 예제* EMP의 EMPNO값과 비교하여 파라미터 값이 숫자를 넣었을 경우 해당 번호에 맞춰서 업데이트, 숫자가 아닐 시 숫자가 아닌 값을 넣었다고 출력1. 일단EMP 테이블의 EMPNO의 타입 확인.......

Github(깃허브) - 프로젝트 올리기 / 프로젝트 등록된 저장소 삭제 [내부링크]

*** Github 프로젝트 올리기1. 일단 Git을 다운받자- 필자는 os가 64bit기 때문에 64bit 사용2. 다운 받았으면 이제 Github에 아이디를 생성한 뒤, 저장소를 만들자- 우측 위의 &#x27;+&#x27; &#62; New repository 클릭 3. 클릭한 다음 나오는 페이지에서 저장소 이름과 설명란을 입력한 다음 밑의 생성 버튼을 클릭해준다.- 사적으로 할지, 공용으로 할지 선택이 가능하다.- 설명 아래엔 설명파일이나 라이센스를 고르는 등의 선택사항이 있다.- 필자는 사적으로 commit할거4. 이제 생성된 github공간의 HTTPS/SSH의 오른쪽 주소를 복사해주자(우측 버튼 클릭 시 자동 복사된다.)5. 이제 자신이 올리고자 할 프로젝트에 우클릭.......

Spring - Oracle 연동 [내부링크]

*** Spring - Oracle 연동- 오늘은 Oracle 연동에 대해 설명하고자 한다.** 준비사항- OS : WINDOWS 10 64bit- 개발도구 : sts4 for Eclipse- DBMS : Oracle 11g- JDK : JAVA JDK 1.8- 웹서버 : apache-tomcat 8.5.59- SPRING VERSION : 5.2.9.RELEASE- 연동하기 전 DB, JDK, 개발도구가 설치되어 있어야한다.* DBMS - 오라클 * 개발도구 - STS4* JDK - 1.8* APACHE-TOMCAT 모든 버전(버전 - bin - 원하는 버전 선택)** Spring - oracle 연동 1. 일단 오라클을 사용하기 위해 jdbc를 설치해줘야한다. jdbc는 압축파일을 넣거나 온라인으로 다운받아서 사용할 수 있는데, 필자는 maven으로 간단히 했다.- pom.xml에 넣을 내용.......

사용자 폴더명 변경 관련 메모 [내부링크]

이글을 보는 사람에게 먼저 얘기하자면.. 이 글을 본 시점에서 한 사람이 있을거 같진 않지만, 백업은 미리 해놓자.. 레지스트리는 가급적 건드리면 안된다. 필자는 여러개 건드리다가 c, d드라이브 내용은 가졌지만, 5년치 다른 폴더 내용은 다 날렸다. 이 글은 사용자 계정명만 건드렸으며, 내가 망한거와 전혀 상관없으니 찾으실분은 보셔도 상관없다.(누군가에게 도움이 되길..)1. 명령어 입력바로 아래 내용은 cmd창 &#62; 관리자 권한에서 실행에서 명령어를 입력하는데, 관리자가 사용자로 등록인데.. 그냥 사용자 계정을 봤을 때 administrator가 있을경우 할 필요 없이 바로 2번부터 시작하자.2. 안전부팅 이동 - 안전부팅을 해.......

SQL(Oracle 기준) - GROUPING(그룹함수) [내부링크]

*** 그룹함수- 내장형 함수의 그룹함수는 집계 함수에 불과하여, 범위가 제한적이지만 그룹 함수를 사용하면 소계, 합계 등의 정보를 모아 보고서를 만들 수 있다.** 그룹 함수 종류** GROUPING 예제1) Oracle Developer 또는 sqlplus창에서 SCOTT 계정 접속2) 출력!- 부서별 직업의 연봉과 부서별, 직업별, 모든 사람 연봉합계 출력 SELECT DECODE(B.DNAME,NULL,&#x27;합계&#x27;,B.DNAME) &#34;부서&#34;, DECODE(A.JOB,NULL,&#x27;합계&#x27;,A.JOB) &#34;직업&#34;, SUM(A.SAL) SAL, COUNT(A.EMPNO) EMP_COUNT,GROUPING(B.DNAME) &#34;합계&#34;,GROUPING(A.JOB) &#34;총합&#34;FROM EMP A, DEPT BWHERE A.DEPTNO &#x3D; B.......

SQL(Oracle 기준) - GROUPING SETS(그룹함수) [내부링크]

*** 그룹함수- 내장형 함수의 그룹함수는 집계 함수에 불과하여, 범위가 제한적이지만 그룹 함수를 사용하면 소계, 합계 등의 정보를 모아 보고서를 만들 수 있다.** 그룹 함수 종류** GROUPING SETS 예제1) Oracle Developer 또는 sqlplus 창에서 SCOTT 계정 접속2. 출력~- 부서 번호와 직업별 합계 조회SELECT DECODE(DEPTNO,NULL,&#x27;합계&#x27;,DEPTNO) &#34;부서번호&#34;, DECODE(JOB,NULL,&#x27;합계&#x27;,JOB) &#34;직업&#34;, SUM(SAL) &#34;연봉&#34;FROM EMP GROUP BY GROUPING SETS(DEPTNO, JOB);SELECT DECODE(DEPTNO,NULL,&#x27;합계&#x27;,DEPTNO) &#34;부서번호&#34;, DECODE(JOB,NULL,&#x27;합계&#x27;,JO.......

SQL(Oracle 기준) - CUBE(그룹함수) [내부링크]

*** 그룹함수- 내장형 함수의 그룹함수는 집계 함수에 불과하여, 범위가 제한적이지만 그룹 함수를 사용하면 소계, 합계 등의 정보를 모아 보고서를 만들 수 있다.** 그룹 함수 종류** CUBE 예제1) Oracle Developer 또는 sqlplus창에서 SCOTT 계정 접속2. 프린트~- CUBE를 이용한 합계의 모든 경우의 수 조회SELECT DECODE(DEPTNO,NULL,&#x27;합계&#x27;,DEPTNO) &#34;부서번호&#34;, DECODE(JOB,NULL,&#x27;합계&#x27;,JOB) &#34;직업&#34;,SUM(SAL) &#34;연봉&#34;FROM EMP GROUP BY CUBE(DEPTNO, JOB)ORDER BY DEPTNO, JOB ASC;- 부서별 / 직업별 / 부서별 직업별 / 전체합계가 출력되는 것을 볼 수 있다.

SQL(Oracle 기준) - List Partition(파티션 테이블) [내부링크]

*** Partition- 대용량의 테이블을 여러 개의 데이터 파일에 분리해서 저장하는 방법- 하나의 큰 테이블을 물리적으로 나누고, 논리적으론 한 개의 테이블- 물리적으로 나눠진 만큼, 분리된 파일의 입력, 수정 ,삭제, 조회 성능이 좋아진다.- 각 파티션 별로 독립적으로 관리할 수 있어, 백업과 복구가 보다 빠르고, 해당 파티션의 전용 인덱스를 사용할 수 있다.** Partition 종류** List Partition- 여러 데이터가 균등하게 분포 되었을 때 특정 값을 골라서 분할하는 방법- 순서에 맞지 않고 연관되지 않은 데이터를 그룹화 할 수 있다.- 파티션 키가 하나의 칼럼으로만 구성되며, NULL값 또한 명시 가능하다.- 대소문자를 구분하며.......

SQL(Oracle 기준) - Partition Index(파티션 인덱스) [내부링크]

** Partition Index- 파티션을 나눌 때 기준이 된 키(컬럼)를 파티션키라 하는데, 해당 파티션 키를 어떻게 사용하느냐에 따라 성능, 관리성에 차이가 생긴다.- Local Index가 Global Index보다 성능, 관리성 등이 상대적으로 우수하지만, 상황에 따라 Global Index를 사용한다.- 파티션 키를 사용해서 인덱스를 만들거나 해당 파티션 별 인덱스를 만들어서 사용- Oracle DB는 Global Non-Prefixed를 지원하지 않는다.** Partition Index 종류

SQL(Oracle 기준) - Range Partition(파티션 테이블) [내부링크]

*** Partition- 대용량의 테이블을 여러 개의 데이터 파일에 분리해서 저장하는 방법- 하나의 큰 테이블을 물리적으로 나누고, 논리적으론 한 개의 테이블- 물리적으로 나눠진 만큼, 분리된 파일의 입력, 수정 ,삭제, 조회 성능이 좋아진다.- 각 파티션 별로 독립적으로 관리할 수 있어, 백업과 복구가 보다 빠르고, 해당 파티션의 전용 인덱스를 사용할 수 있다.** Partition 종류 ** Range Partition- 데이터가 정말 많아 여러 데이터를 범위별 분할하는 방식- 정해진 범위에 적용하기엔 안성맞춤인 분할기법이며 기준값이 중요하다.-- 파티션 기준 값으로, 가장 작은 값보다 작거나, 사이의 값으로 값 설정(설정값보다 작아야.......

SQL(Oracle 기준) - Hash Partition(파티션 테이블) [내부링크]

*** Partition- 대용량의 테이블을 여러 개의 데이터 파일에 분리해서 저장하는 방법- 하나의 큰 테이블을 물리적으로 나누고, 논리적으론 한 개의 테이블- 물리적으로 나눠진 만큼, 분리된 파일의 입력, 수정 ,삭제, 조회 성능이 좋아진다.- 각 파티션 별로 독립적으로 관리할 수 있어, 백업과 복구가 보다 빠르고, 해당 파티션의 전용 인덱스를 사용할 수 있다.** Partition 종류** Hash Partition - Hash 함수와 같이, key-value로 구성된 파티션 테이블이다.- 관리쪽에 타 파티션에 비해 적합하진 않으나, 특정 데이터를 다루는데 최적화 된 파티션이다.- 파티션 키 조건에 의존되므로 조건이 까다롭고 각 테이블 스페이스별로.......

SQL(Oracle 기준) - Window Function(윈도우 함수) 구조 [내부링크]

*** Window Function- 행과 행간의 관계를 정의하는 함수- 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.- GROUP BY 구문과 같이 사용할 수 없다.- 중첩 사용은 불가능하지만, 서브쿼리에서 사용 가능하다.** WINDOW 함수 구조* 기본 작성 방법** WINDOWING 구조* BETWEEN 사용 / 미 사용 타입** WINDOW 함수 예제1. EMP 테이블의 첫번째 행부터 마지막 행까지의 연봉 전체 합계를 TOTAL에 넣기SELECT EMPNO, ENAME, SAL,SUM(SAL) OVER(ORDER BY SALROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) TOTALFROM EMP;2. 출력!3. EMP 테이블의 첫번째 행부터 현재 행까지의 합계 SELECT EMPNO, ENAME, SAL,SUM(SA.......

SQL(Oracle 기준) - Window Function(윈도우 함수), RANK(), DENSE_RANK(), ROW_NUMBER()(랭크 함수) [내부링크]

*** Window Function- 행과 행간의 관계를 정의하는 함수- 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.- GROUP BY 구문과 같이 사용할 수 없다.- 중첩 사용은 불가능하지만, 서브쿼리에서 사용 가능하다.** WINDOW 함수 구조* 기본 작성 방법** WINDOWING 구조* BETWEEN 사용 / 미 사용 타입** 그룹 내 관련 함수** RANK 함수란?- 동일 순위에 동일 값이 부여되며 이후의 순위는 밀려나는 걸 볼 수 있다.* 사용 방법 ** RANK 함수 예제1. EMP 테이블의 급여 순위 계산(동일 순위는 동일하게 조회) SELECT ENAME, JOB, SAL, RANK() OVER (ORDER BY SAL DESC) ALL_RANKFROM EMP;2. 출력!3. EMP 테이블의 직업별 급.......

SQL(Oracle 기준) - Window Function(윈도우 함수), SUM, AVG, COUNT, MAX, MIN(그룹 내 집계함수) [내부링크]

*** Window Function- 행과 행간의 관계를 정의하는 함수- 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.- GROUP BY 구문과 같이 사용할 수 없다.- 중첩 사용은 불가능하지만, 서브쿼리에서 사용 가능하다.** WINDOW 함수 구조* 기본 작성 방법** WINDOWING 구조* BETWEEN 사용 / 미 사용 타입** 그룹 내 관련 함수** 그룹 내 집계함수- 파티션 별 집계 값을 계산한다.(집계 함수와 다른 점 : 파티션 별 계산한다는 것)- SUM : 파티션 별 합계 계산- AVG : 파티션 별 평균 계산- COUNT : 파티션 별 행 수 계산- MIN : 파티션 별 최소값 계산- MAX : 파티션 별 최대값 계산* 사용 방법 ** 그룹 내 집계함수 예제1. EMP 테.......

SQL(ORACLE 기준) - Join(Outer Join) [내부링크]

*** Join - 두 개 이상의 테이블을 연결한 테이블 검색- 주로 테이블의 기본 키와 외래 키를 연결하는데 사용하여 Join 한다.- 테이블 조인 시 연결하는 칼럼의 데이터 타입이 서로 동일해야 가능하다.** OUTER JOIN- EQUI JOIN과 달리 조인 조건을 만족하지 못한 행도 같이 조회한다.- 사용법 : SELECT 칼럼명 1,2.. FROM 테이블명 1,2.. WHERE 테이블 1. 칼럼(+) &#x3D; 테이블 2. 칼럼;- 조건에 만족하는 값이 없어도 조회하는 쪽에 (+)를 붙여서 조회- (+)는 연산자이며 한쪽에만 붙여서 사용 가능하며 조회 기준점이 (+) 반대 칼럼- 연결하는 기준의 값이 있어야 하니까 조회 기준은 NULL이 나오지 않음- 첫 번째 OUTER JOIN - 두 번.......

SQL(ORACLE 기준) - Join(Inner Join, Cross Join, Natural Join) [내부링크]

*** Join - 두 개 이상의 테이블을 연결한 테이블 검색- 주로 테이블의 기본키와 외래키를 연결하는데 사용하여 Join한다.- 테이블 조인 시 연결하는 컬럼의 데이터 타입이 서로 동일해야 가능하다.** INNER JOIN- 일반적인 JOIN에서 ,를 생략하고 INNER JOIN을 사용한다.- 수학적으로 말하면 교집합의 결과가 반환된다. 즉, 겹치는 부분만 출력- INNER 키워드를 생략해도 되며 WHERE절 대신 ON절을 사용한다.- 사용법 : SELECT 컬럼명1,2.. FROM 테이블명 1 (INNER) JOIN 테이블명2 ON 테이블명 1.컬럼 &#x3D; 테이블명2. 컬럼; ** CROSS JOIN- 수학의 카테시안 곱을 의미하며, 양쪽 테이블 검색 내용을 서로 곱한 결과를 조회 - 사용법 :.......

DB - Oracle SQL Developer 설치 [내부링크]

*** Oracle SQL Developer - SQL 개발자를 위해 오라클에서 만든 개발도구로, 무료로 사용 가능하다.- 2021.01 기준 JDK버전 10 이상은 아직 지원하지 않으며 작동하지 않으므로 JDK 8을 추천한다.- 설치 전 JDK와 Oracle DBMS Client 설치를 해줘야 하며 오라클 계정이 있어야 한다.** 개발환경- JDK : JDK 1.8 - OS : Windows 10 64bit- Oracle DBMS Client : 11g** 설치 순서 설치 홈페이지- 위의 페이지에서 JDK8을 포함한 버전, 없는 버전, OS별 파일을 제공한다.1) 빨간색 박스는 JDK 8이 포함된 WINDOW 64 bit 파일, 초록색은 JDK가 포함되지 않은 WINDOW 32/64 bit파일이며, 필자는 JDK가 있으므로 초록색을 선택했다.2)Do.......

SQL(ORACLE 기준) - Sub Query(서브 쿼리) [내부링크]

*** Sub Query(서브 쿼리)- SQL 문장 내에 포함된 또 다른 SQL문이 있는 쿼리문- 전체 SQL문장(메인 쿼리)와 안에 있는 SQL문장(서브 쿼리)라고 한다.- 서브쿼리는 반드시 () 안에 작성해야 한다.- 서브쿼리의 결과물에 따라 다양한 연산자와 결과를 볼 수 있다.** 서브쿼리의 종류 단일 행 서브 쿼리- 서브쿼리의 결과물이 1개만 나온다.- 서브쿼리의 결과와 단일 행 연산자를 사용하여 메인 쿼리 실행한다.- 다중 행 연산자(IN, ANY, SOME, ALL, EXISTS) 사용 불가 다중 행 서브 쿼리- 서브쿼리의 결과물이 2개 이상 나온다.- 서브쿼리의 결과와 다중 행 연산자를 사용하여 메인 쿼리 실행한다.- 단일 행 연산자(&#x3D;, &#60;&gt.......

IntelliJ - GIT주소를 활용한 프로젝트 다운로드 및 실행 [내부링크]

*** IntelliJ - GIT을 활용한 프로젝트 실행- GIT 주소를 통해 프로젝트를 다운로드 하고 그것을 실행하고자 한다.** 내용 수행 전 필요 사항- 아이디 : GIT아이디, 오라클 아이디(JDK 설치)- IDE : IntelliJ(Community버전 가능)- JDK : JDK 11(개인 사용 같은 특정 사용일 때 무료 허용 - 2021.01 기준)1) GIT주소 추출 - 프로젝트가 있는 GIT 홈페이지 -해당 홈페이지로 가면 스프링에서 제공하는 프로젝트임을 알 수 있는데, Code 버튼을 클릭하면 git의 주소, git 오픈, zip파일로 다운로드 등이 나온다.- 필자는 git주소를 사용해서 프로젝트를 진행할 것이므로 주소를 복사해놓는다.- 아래 Spring PetClinic의 샘플 애플리케.......

Eclipse - Spring Tools 설치 및 Spring MVC 프로젝트 생성 [내부링크]

** 개발 환경개발도구 : Eclipse운영체제 : Windows 10*** Eclipse - Spring Tools 설치 및 Spring MVC 프로젝트 생성 1) 이클립스 상단 메뉴의 Help &#62; Eclipse Marketplace 클릭 2) spring을 검색하면 2번째 Spring Tools 3를 install 하기3) 해당 화면이 나오면 Confirm클릭3-2) Confirm버튼 클릭 시 install 이후 동의 페이지에서 동의하기 선택 후 Finish클릭- 하단 install이 완료되면 사용 가능하며, 너무 오래걸리면 이클립스를 껏다가 다시 키는게 좋다.4) 모두 설치가 되면 이클립스를 껏다가 재실행한 다음 Project Explorer &#62; New &#62; Others &#62; spring 검색, Spring Legacy Project 클릭 5) Spring MVC Project.......

SQL(ORACLE 기준) - UNION, UNION ALL, MINUS [내부링크]

*** UNION, UNION ALL, MINUS- UNION : 두 개의 테이블을 하나로 합치는 것 - UNION ALL : 두 개의 테이블을 하나로 합치되, 중복을 제거하거나 정렬을 하지 않는다.- MINUS : 두 개의 테이블에서 먼저 쓴 SELECT문에 있고 뒤의 SELECT문에 없는 집합을 조회한다.** UNION UNION- 수학적 용어로 합집합과 같다.- 주의사항은 두 개의 테이블의 칼럼 수, 데이터 형식이 모두 일치해야 한다.- 사용 시 중복 제거와 동시에 정렬된 결과를 반환한다.** UNION ALL UNION ALL- UNION과 동일한 기능을 수행한다.- UNION과 다른 점은 사용 시 중복 제거와 정렬을 하지 않고 그냥 합친다.** MINUS- 수학적 용어로 차집합과 같다.- 2개의 SELE.......

SQL(Oracle 기준) - 계층형 조회(Connect by) [내부링크]

*** 계층형 조회(Connect by)- 오라클 DB에서 지원한 계층형으로, 데이터를 조회할 수 있다.- 상하관계의 정보를 조회하는데, Tree 형태의 구조로 질의문을 수행한다.- 시작 위치와 테이블의 연결된 정보를 찾기 위해 조인 조건을 걸어서 수행한다.** 키워드** 예제1) Oracle Developer 또는 sqlplus창에서 SCOTT 계정 접속2) 출력!1) 최하위 계층 값 출력(1이 가장 높음)SELECT MAX(LEVEL) FROM EMP ESTART WITH E.MGR IS NULLCONNECT BY PRIOR E.EMPNO &#x3D; E.MGR;2) 계층형 구조, 1부터 4까지의 계층 값 출력하기(연결된 계층)SELECT LEVEL, E.EMPNO, E.MGR, E.ENAMEFROM EMP ESTART WITH E.MGR IS NULLCONNECT BY PRIOR E.EM.......

SQL(Oracle 기준) - ROLLUP (그룹 함수) [내부링크]

*** 그룹함수- 내장형 함수의 그룹함수는 집계 함수에 불과하여, 범위가 제한적이지만 그룹 함수를 사용하면 소계, 합계 등의 정보를 모아 보고서를 만들 수 있다.- DECODE / CASE 함수를 사용할 경우 보기 편하게 보고서를 작성할 수 있다.** 그룹 함수 종류** ROLLUP 예제1) Oracle Developer 또는 sqlplus창에서 SCOTT 계정 접속2) 출력!- 부서별 합계, 전체합계 구하기SELECT DECODE(DEPTNO, NULL,&#x27;전체합계&#x27;, DEPTNO),SUM(SAL)FROM EMPGROUP BY ROLLUP(DEPTNO);- 부서명과 직업을 기준으로 연봉 합계, 전체 합계를 구하기SELECT DECODE(DNAME,NULL,&#x27;전체합계&#x27;,DNAME),DECODE(JOB,NULL,&#x27;합계&#x2.......

SQL(ORACLE 기준) - 내장형함수(문자형 함수) [내부링크]

*** 내장형 함수- 오라클 DB에서 제공하는 SQL 함수- DBMS에 따라 사용하는데 조금 다르지만 대체로 내용은 동일하다.- 내장형 함수엔 문자형, 숫자형, 날짜형 등의 함수가 존재한다.** 문자형 함수- 문자형 함수는 매개변수에 문자 데이터를 받아서 문자나 숫자를 반환한다. ** 내장형 함수 - 문자형 함수 예제1) DBMS에 해당 SQL문 작성 후 실행2) 결과!2020년 한해 모두 고생 많으셨습니다. 다들 코로나 조심하시구 내년도 건강하게 무사히 지내시길 기원합니다.

SQL(ORACLE 기준) - 내장형 함수(날짜형/형 변환 함수) [내부링크]

*** 내장형 함수- 오라클 DB에서 제공하는 SQL 함수- DBMS에 따라 사용하는데 조금 다르지만 대체로 내용은 동일하다.- 내장형 함수엔 문자형, 숫자형, 날짜형 등의 함수가 존재한다.** 날짜형 함수- 날짜형 함수는 문자나 숫자를 변수로 받아 날짜를 반환한다.** 형변환 함수- 날짜 데이터는 형변환 함수 안에서도 사용 할 수 있다.- TO_NUMBER ↔ TO_CHAR ↔ TO_CHAR 의 구조로 형 변환 가능하다.- 숫자형에서 날짜형은 바로 형변환 할 수 없다.* TO_CHAR를 이용한 숫자 데이터 출력 종류* TO_CHAR를 이용한 날짜 데이터 출력 종류 ** 내장형 함수 - 날짜형 함수 예제1) DBMS에 해당 SQL문 작성 후 실행2) 결과!- 오늘 날짜(SYSDATE 사.......

SQL(ORACLE 기준) - 내장형 함수(숫자형 함수) [내부링크]

*** 내장형 함수- 오라클 DB에서 제공하는 SQL 함수- DBMS에 따라 사용하는데 조금 다르지만 대체로 내용은 동일하다.- 내장형 함수엔 문자형, 숫자형, 날짜형 등의 함수가 존재한다.** 숫자형 함수- 숫자형 함수는 숫자 데이터를 변수로 받아서 숫자를 반환한다. ** 내장형 함수 - 숫자형 함수 예제1) DBMS에 해당 SQL문 작성 후 실행2) 결과!

SQL(ORACLE 기준) - 사용자 계정 생성 및 권한 부여 [내부링크]

*** 사용자 계정 생성, 권한 부여- 사용자 계정 생성 시 반드시 SYSTEM 계정에 접속해야한다.(최상위 계정)** 사용자 계정 생성, 권한 방법- 해당 아이디에 비밀번호를 입력한 유저 생성 권한 부여 종류- RESOURCE : 자신의 스키마 영역 내, PS/SQL을 사용할 수 있는 권한 부여- CONNECT TO : 접속 권한 ROLE(테이블 생성, 조회와 같은 기능)- DBA : DB 관리자와 같은 DB의 모든 시스템 권한 부여 권한 부여/ 철회는 아래에서 다룬다. ** 사용자 계정 생성 예제(Oracle Developer, console) Oracle Developer 사용1) system 계정 접속 - name : 접속 이름- 사용자 이름 : db에 접속할 사용자 이름- 비밀번호 : db에 접속.......

SQL(ORACLE 기준) - 내장형 함수(NULL 관련 함수) [내부링크]

*** 내장형 함수- 오라클 DB에서 제공하는 SQL 함수- DBMS에 따라 사용하는데 조금 다르지만 대체로 내용은 동일하다.- 내장형 함수엔 문자형, 숫자형, 날짜형 등의 함수가 존재한다.** NULL 관련 함수- 0과 공백과는 다른 NULL을 판별하기 위해 사용하는 함수- 주로 NULL값이 포함된 데이터 타입이나, 연산 결과에서 NULL의 유무 확인 ** 내장형 함수 - NULL 관련 함수 예제1) DBMS에서 SCOTT 계정의 EMP테이블을 참조하여 SQL 실행- EMP 테이블 내용(SELECT * FROM EMP;)- SQL문 실행 2) 결과! NVL(컬럼,치환할 값) : EMP테이블의 COMM 컬럼의 NULL값을 0으로 치환SELECT ENAME, NVL(COMM,0) AS &#34;NVL&#34;, COMM FROM EMP;.......

SQL(ORACLE 기준) - 내장형 함수(그룹 함수) [내부링크]

*** 내장형 함수- 오라클 DB에서 제공하는 SQL 함수- DBMS에 따라 사용하는데 조금 다르지만 대체로 내용은 동일하다.- 내장형 함수엔 문자형, 숫자형, 날짜형 등의 함수가 존재한다.** 그룹 함수- 행들을 그룹화하여 하나의 도출된 결과를 반환한다.- 주로 수와 연관되어 있는 함수이다. ** 내장형 함수 - 그룹 함수 예제1) DBMS에서 SCOTT 계정의 EMP테이블을 참조하여 SQL 실행- EMP 테이블 내용(SELECT * FROM EMP;)- SQL문 실행 2) 결과!- COUNT(컬럼) : 해당 컬럼의 행 수 출력SELECT COUNT(*), COUNT(EMPNO), COUNT(COMM), COUNT(MGR) FROM EMP;- SUM(컬럼) : 해당 컬럼 값들의 총 합을 반환SELECT SUM(SAL) FROM EMP;- MAX(컬.......

SQL(ORACLE 기준) - ROWNUM, ROWID [내부링크]

*** ROWNUM- SELECT문 결과로 나오는 행의 일련번호를 의미한다.- ROWNUM을 통해 최소 한개의 행을 가져올 수 있으며, 여러 행을 가져오기 위해선 Inline view를 사용해야한다. - 주로 한 화면에 보여지는 조회 개수를 정할 때(페이지번호, 조회된 콘텐츠 개수 등...) 사용한다.** ROWNUM 예제1) DBMS에 해당 SQL문 작성 후 실행2) 결과!- ROWNUM : SELECT문 결과의 행의 일련번호 출력SELECT * FROM EMP WHERE ROWNUM &#60;&#x3D; 1;- ROWNUM의 다중 행 출력(제한 없음)SELECT * FROM (SELECT ROWNUM LIST, ENAME FROM EMP);- ROWNUM의 다중 행 출력(제한 있음)SELECT * FROM (SELECT ROWNUM LIST, ENAME FROM EMP) WHERE LIST&#60;&#.......

SQL(ORACLE 기준) - Join((비)등가 Join, 셀프 Join) [내부링크]

*** Join - 두 개 이상의 테이블을 연결한 테이블 검색- 주로 테이블의 기본 키와 외래 키를 연결하는데 사용하여 Join 한다.- 테이블 조인 시 연결하는 칼럼의 데이터 타입이 서로 동일해야 가능하다.** EQUI JOIN(등가 조인)- 가장 일반적으로 사용하는 &#x27;&#x3D;&#x27;에 의한 조인이다.- 조인 대상의 테이블에서 공통으로 칼럼 값이 일치하는 행을 연결하여 사용한다.- 한쪽 칼럼에 값이 없을 경우의 행은 조회하지 않는다.** NON-EQUI JOIN(비등가 조인)- 동일 칼럼 없이 다른 조건을 사용하는 조인- 특정 범위, 부정, NULL 관련 조건을 사용하는 조인이다.** SELF-JOIN(셀프 조인)- 자신과 자기 자신의 테이블, 즉 자신을 조인한.......

IntelliJ - IntelliJ 설치 [내부링크]

*** IntelliJ 설치- IntelliJ는 Java 개발 툴 중 하나로, 스프링을 배우려고 하던 도중, 이클립스보다 IntelliJ이 초기 준비시간이 단축된다는 얘기가 있어서 설치하게 되었다. - 무료와 유료 버전이 있는데, 무료버전에선 기능의 제한이 있다고 생각하면 된다.- 유료는 학생일 경우 잠깐 쓸 수 있는걸로 알고 있으나, 필자는 학생도 아니고 사용만 해보기 위해 Community인 무료 버전으로 설치하고자 한다.** IntelliJ 설치 과정1) 해당 홈페이지로 이동하자 - 화면은 다음과 같이 뜨는데, OS버전 별 설치와 좌측은 유료 우측은 무료 개발 툴을 다운 받을 수 있다.(유료는 30일 평가판을 제공한다.)- 왼쪽을 보면 다른 버전을 선택해.......

API - 네이버 API 등록 [내부링크]

*** 네이버 API 등록 네이버 아이디 필요https://developers.naver.com/main/- 해당 홈페이지로 이동하면 아래와 같은 내용이 보여진다.- 필자는 네이버 아이디로 로그인을 클릭(일명 네아로)1) 로그인된 상태에서 메뉴를 클릭하면 등록할 수 있는 페이지* 애플리케이션 등록(API 이용신청)- 애플리케이션 이름 : 말 그대로 애플리케이션 이름을 입력하기(필자는 PS)* 사용 API- 사용 API : 네이버 API중 어떤 API를 사용할지 추가하는 곳(필자는 모두 추가)* 환경추가, 로그인 오픈 API 서비스 환경, 비로그인 오픈 API 서비스 환경- 환경 추가 : 안드로이드, iOS, 모바일 웹, PC 웹, Windows App중 환경 추가(사용할 환경을 선.......

DB - RDB(Relational DataBase), OODB(Object-Oriented DataBase) [내부링크]

*** RDB(Relational DataBase)- 데이터에 관계 개념을 부여하여 데이터를 테이블화하여 칼럼과 로우로 구성한다.- 관계를 이룰 때 key란 기능을 사용해서 테이블 간 관계를 기술하고 구조화한다.- 질의어(Query Language)가 존재하며 신기술에 대해 신속한 지원을 해준다.# 장점- 관계로 이뤄진 만큼 데이터의 분류, 정렬, 탐색 속도가 빠르다.- 범용적인 DB이며 안정적이며 데이터의 무결성을 보장해준다.# 단점- 테이블 간 관계를 맺는데 복잡하며 테이블 구조 변경 시 관계에 따라 어렵다.- 설계가 어렵고 대량의 데이터를 입력, 조회 시 오래 걸린다.** RDB 특징- 모든 데이터를 표라는 테이블로 표현한다.- 테이블은 행(row, tuple, r.......

SQL(ORACLE 기준) - DUAL 테이블 [내부링크]

*** DUAL 테이블- Oracle DB에 의해 자동으로 생성되는 테이블이자 오직 한 행에 한 컬럼만 담고 있는 dummy 테이블이다.- Oracle DB의 모든 사용자 사용 가능하며 내장형 함수를 사용할 수 있다.- SELECT문에서 상수를 계산(산술연산)할 때 좋다.- DUAL테이블은 dummy 컬럼의 varchar2(1) 타입으로 구성되어있다.- X라는 값이 저장되어 있는데 X는 아무 의미가 없다.(형식상의 의미)** DUAL 테이블 예제1) DUAL 테이블 출력2) 60*60의 값을 출력3) 날짜 출력

SQL(ORACLE 기준) - TCL(Transaction Control Lauguage), 트랜잭션(Transaction) [내부링크]

*** TCL(Transaction Control Lauguage)- 트랜잭션 제어 언어 ** 트랜잭션- 데이터베이스의 작업 처리를 나타내는 단위(연산들의 집합)- 실행 전부터 후까지 중간 문제 발생 시 기존 실행했던 작업을 무효화한다.- 말 그대로 4개를 실행할 때 2개 진행 완료 후 2개 실행 중 1 문제 발생 시 모든 작업을 초기화하여 미완료 작업 처리 하는 것 트랜잭션 특성(ACID)1. Atomicity(원자성)- 데이터베이스 연산의 전부 실행 또는 전부 미실행만 있음2. Consistency(일관성)- 트랜잭션 실행 결과로 데이터베이스의 모순적인 결과가 있으면 안됨- 실행 후 결과에 맞는 일관성이 필요3. Isolation(고립성)- 트랜잭션 실행 중의 연산 중간 결과.......

SQL(ORACLE 기준) - 인덱스(INDEX) [내부링크]

*** INDEX- 데이터베이스 객체 중 하나로 색인 기능을 가지고 있다.- 책의 목차처럼 데이터 조회 시 검색 속도를 향상시키기 위한 용도- 테이블과 별개의 독립 객체지만, 테이블에 의존적인 성향을 가지고 있다.- 기본키나 유일키와 같은 제약 조건이 지정되면 해당 키에 인덱스가 자동 설정** INDEX의 장, 단점** INDEX 종류 B-TREE INDEX- 실시간 데이터 입력/수정 환경에 주로 사용1) 고유 INDEX - 중복되지 않는 데이터를 인덱스의 키값으로 지정하는 인덱스2) 비 고유 INDEX- 중복되는 데이터를 인덱스의 키값으로 지정하는 인덱스3) FUNCTION BASED INDEX(함수 기반 인덱스)- 조인이나 조건에 사용할 인덱스로 생성한다.- 해당.......

DB - DBMS(DataBase Management System) [내부링크]

*** DBMS(DataBase Management System)- DB를 구성하고 운영하는 소프트웨어 시스템으로 DB를 만들고 사용하는 도구- DBMS 종류로 Oracle, MySQL, MS SQL 등이 있다.** DBMS 종류 1) Oracle# 장점- 사용층이 가장 많음- PC뿐만 아니라 대형 서버에도 설치할 수 있음- 분산처리를 지원하며 제품 우수성이 입증* ORACLE 설치 홈페이지 https://www.oracle.com/kr/downloads/- 데이터베이스에서 설치할 버전을 선택한 뒤, 사용환경에 맞춰 설치하면 된다.# 단점- 운영하는데 많은 자원이 필요하며 타 DBMS보다 상대적으로 가격이 비쌈2) MySQL# 장점- 저렴한 가격으로 사용되어 중소 규모 서비스에 적합하다.- 지속적인 성능 향상을 통해 대.......

SQL(ORACLE 기준) - 형변환 [내부링크]

*** 형변환- 두 데이터의 타입(형)이 일치하도록 변환하는 방법- (숫자 / 문자열), (문자열 / 날짜형)과 같은 타입 불일치 시 사용- 형변환은 명시적(직접 적용)과 묵시적(간접 적용)으로 나뉜다.- 인덱스 칼럼에 사용 시 묵시적 형변환이 발생하면 인덱스의 기능이 무의미해진다** 형변환 종류 명시적 형변환- 말 그대로 형변환을 직접 적어서 적용시키는 것이다.* 명시적 형변환 함수- FORMAT : 변환 데이터 타입을 의미1) TO_NUMBER(문자열)- 문자열로 구성된 숫자를 숫자로 변환한다.2) TO_CHAR(숫자 OR 날짜, FORMAT)- 숫자형 또는 날짜형을 FORMAT(문자형)으로 변환한다.3) TO_DATE(문자열, FORMAT)- 문자열을 날짜형으로 변환.......

SQL(ORACLE 기준) - DCL(Data Control Language - 데이터 제어어) [내부링크]

*** DCL(Data Control Lauguage)- 데이터 접근 권한, 롤(권한 집합체) 권한 부여 명령어(유저, role, 시스템 대상)- 모든 사용자에게 모든 데이터 접근 허용으로 인한 불상사를 방지할 수 있다.- 특정 사용자에겐 제약된 권한을 부여함으로써 특정 사용자가 업무를 쉽게 배울 수 있다.(자신의 위치에서 필요한 권한만 사용하기 때문에)- DBMS의 트랜잭션 관리** 권한 검색(유저, ROLE, 시스템(데이터베이스) )** GRANT- 데이터베이스에 대한 사용자의 권한 부여(부여된 권한 레벨에 따라 데이터베이스에 접근 제약이 있음) GRANT 부여 방법** REVOKE- 데이터베이스에 대한 사용자의 권한 회수 REVOKE 회수 방법

JSP / Servlet - 리스너(ServletContextAttributeListener) [내부링크]

*** 리스너- 컨테이너에서 발생하는 특정 이벤트 상황에서 실행되는 장치- 여기서 이벤트란, 어떤 사건이 발생하는 걸 의미한다.- 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스로, 특정 상황 시 행동하는 걸 &#x27;이벤트 핸들링&#x27;이라고 하며 주로 웹 애플리케이션 전체의 설계 관점에서 사용한다. - 그냥 간단하게 특수 상황에 행동하는 장치로 보면 된다.- javax.servlet.ServletContextAttributeListener를 임포트해서 메서드를 사용 - ServletContextAttributeEvent 발생 시 호출하는 메서드를 가진 인터페이스- ServletContextAttributeEvent 객체를 통해 해당 속성이름과 값을 호출한다.- 서블릿 컨텍스트 속성에 대해 추.......

JSP / Servlet - 리스너(ServletRequestListener) [내부링크]

*** 리스너- 컨테이너에서 발생하는 특정 이벤트 상황에서 실행되는 장치- 여기서 이벤트란, 어떤 사건이 발생하는 걸 의미한다.- 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스로, 특정 상황 시 행동하는 걸 &#x27;이벤트 핸들링&#x27;이라고 하며 주로 웹 애플리케이션 전체의 설계 관점에서 사용한다. - 그냥 간단하게 특수 상황에 행동하는 장치로 보면 된다.- javax.servlet.ServletRequestListener를 임포트 해서 메서드 사용 - ServletRequest 객체 발생 시 호출하는 메서드를 가진 인터페이스- ServletRequest 객체의 생성, 소멸 시 알림 이벤트* ServletRequestListener 추상 메서드** ServletRequestListener 예제(이.......

JSP / Servlet - 리스너(ServletRequestAttributeListener) [내부링크]

*** 리스너- 컨테이너에서 발생하는 특정 이벤트 상황에서 실행되는 장치- 여기서 이벤트란, 어떤 사건이 발생하는 걸 의미한다.- 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스로, 특정 상황 시 행동하는 걸 &#x27;이벤트 핸들링&#x27;이라고 하며 주로 웹 애플리케이션 전체의 설계 관점에서 사용한다. - 그냥 간단하게 특수 상황에 행동하는 장치로 보면 된다.- javax.servlet.ServletContextAttribute 인스턴스를 통해 해당 메서드를 사용 - ServletContextAttributeEvent 발생 시 호출하는 메서드를 가진 인터페이스- ServletContextAttributeEvent 객체를 통해 해당 속성이름과 값을 호출한다.- 서블릿 컨텍스트 속성에 대해 추.......

JSP / Servlet - 리스너(HttpSessionListener) [내부링크]

*** 리스너- 컨테이너에서 발생하는 특정 이벤트 상황에서 실행되는 장치- 여기서 이벤트란, 어떤 사건이 발생하는 걸 의미한다.- 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스로, 특정 상황 시 행동하는 걸 &#x27;이벤트 핸들링&#x27;이라고 하며 주로 웹 애플리케이션 전체의 설계 관점에서 사용한다. - 그냥 간단하게 특수 상황에 행동하는 장치로 보면 된다.- javax.servlet.http.HttpSession 인스턴스를 통해 해당 메서드를 사용 - HttpSessionEvent 발생 시 호출하는 메서드를 가진 인터페이스- HttpSessionEvent 객체를 통해 해당 속성 이름과 값을 호출한다.- 세션 생성, 소멸에 대한 알림을 받는 것- 세션은 브라우저와 연.......

SQL(ORACLE 기준) - View(뷰) [내부링크]

*** view- 테이블로부터 유도된 가상 테이블로 실제 데이터를 갖고 있지 않다.- 존재하는 테이블을 참조해서 사용자가 원하는 컬럼만 조회할 수 있다.- 특정 컬럼만 조회해서 보안성을 향상시킨다.(검색 용도)- 기존 생성된 뷰에 입력, 수정이 불가능하며 원하는 내용을 추가하거나 수정할 시 뷰 자체를 삭제 후 재생성 해야한다.** view 생성과 삭제** view의 장, 단점** view 생성 예제1. 해당 member란 테이블 생성 후 데이터를 입력한다.2. member 검색한 내용을 가진 view1를 만든 다음 view1를 출력해본다.3. select를 통해 member 테이블과 view1 뷰를 검색해본다.4. 동일한 내용이 나온것을 확인- select * from member;- se.......

JSP / Servlet - 리스너(HttpSessionBindingListener) [내부링크]

*** 리스너- 컨테이너에서 발생하는 특정 이벤트 상황에서 실행되는 장치- 여기서 이벤트란, 어떤 사건이 발생하는 걸 의미한다.- 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스로, 특정 상황 시 행동하는 걸 &#x27;이벤트 핸들링&#x27;이라고 하며 주로 웹 애플리케이션 전체의 설계 관점에서 사용한다. - 그냥 간단하게 특수 상황에 행동하는 장치로 보면 된다.- javax.servlet.http.HttpSessionBinding 인스턴스를 통해 해당 메서드를 사용 - HttpSessionBindingEvent 발생 시 호출하는 메서드를 가진 인터페이스- HttpSessionBindingEvent 객체를 통해 속성 이름 값을 호출한다.- 세션에서 동시 사용자 및 중복 로그인 방지를 위.......

JSP / Servlet - 리스너(HttpSessionAttributeListener) [내부링크]

*** 리스너- 컨테이너에서 발생하는 특정 이벤트 상황에서 실행되는 장치- 여기서 이벤트란, 어떤 사건이 발생하는 걸 의미한다.- 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스로, 특정 상황 시 행동하는 걸 &#x27;이벤트 핸들링&#x27;이라고 하며 주로 웹 애플리케이션 전체의 설계 관점에서 사용한다. - 그냥 간단하게 특수 상황에 행동하는 장치로 보면 된다.- javax.servlet.http.HttpSessionAttributeListener 인터페이스를 통해 해당 메서드를 사용 - HttpSessionBindingEvent 발생 시 호출하는 메서드를 가진 인터페이스- HttpSessionBindingEvent 객체를 통해 해당 속성이름과 값을 호출한다.- HttpSession 객체 값을 저장하.......

JSP / Servlet - 리스너(HttpSessionActivationListener) [내부링크]

*** 리스너- 컨테이너에서 발생하는 특정 이벤트 상황에서 실행되는 장치- 여기서 이벤트란, 어떤 사건이 발생하는 걸 의미한다.- 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스로, 특정 상황 시 행동하는 걸 &#x27;이벤트 핸들링&#x27;이라고 하며 주로 웹 애플리케이션 전체의 설계 관점에서 사용한다. - 그냥 간단하게 특수 상황에 행동하는 장치로 보면 된다.- javax.servlet.http.HttpSessionActivationListener 인터페이스의 추상 메서드 사용 - HttpSessionEvent 발생 시 호출하는 메서드를 가진 인터페이스- HttpSessionEvent 객체를 통해 객체 안의 필드 확인- 새로운 가상머신으로 옮겨가기 전 후(마이그레이션)의 행동을 정.......

JSP / Servlet - 필터(filter) [내부링크]

*** 필터(filter)- 리스너와 같이 웹 애플리케이션에서 걸러내는 용도로 사용한다.- 사용자 요청 이전에 먼저 실행되므로, 설계 관점에서 매우 중요하다.- 인증과 같은 기능을 수행할 수 있으며, 필터를 이용하면 각각의 페이지에서 필터 기존 내용을 수정하지 않고도 인증 기능을 수행할 수 있다.- 필터를 통해 요청사항과 출력사항에 대한 기록을 출력하며 확인을 통해 해당 설계가 정확히 실행되는지 확인 할 수 있다.- 다국어나 파일 압축, 변환 등.. 필터를 통해 적용할 수 있다.**필터의 작동 과정1) 톰캣 서버를 실행 시 javax.servlet.Filter 인터페이스를 구현한 클래스들이 초기화되는데, 각 필터는 init()메서드를 통해 초기화 작.......

JSTL - SQL 라이브러리 주요 태그(쿼리 전송) [내부링크]

*** SQL 라이브러리 주요 태그** 쿼리 전송* []안의 내용은 생략이 가능하다.* 실행하기 전, 반드시 db가 연결된 환경을 구현해야 한다. &#60;sql:query&#62; - &#60;sql:query&#62;를 통해 sql 쿼리 문장을 실행한다.- 자바의 executeQuery()기능과 비슷함* &#60;sql:query&#62; 속성 값 &#60;sql:update&#62;- &#60;sql:update)를 통해 데이터베이스에 insert, update와 같은 값을 수정하거나 입력할 sql 쿼리 문장을 실행한다.- 자바의 executeUpdate()와 비슷함* &#60;sql:update&#62; 속성 값 &#60;sql:param&#62;, &#60;sql:dateParam&#62;- &#60;sql:param&#62;을 통해 파라미터 값(문자열 형식) / &#60;sql:dateParam&#62;은 날짜, 시간 관.......

JSTL - 다국어 처리 1(Locale Class) [내부링크]

*** 다국어 처리- 웹 브라우저를 사용하는 국가에 따른 언어, 지역을 지원하는 서비스- JSTL의 FMT 태그를 이용해서 다국어를 지원할 수 있음- 다양한 언어와 지역, 문화에 적용될 수 있게 한다.** Locale class- 다국어 처리하는데 사용하는 클래스로, 사용자의 지역 환경에 따라 결정되는 지역적 문화의 정보를 담고 있다.- request 내장 객체를 사용하며, JSP 페이지에서 Page 디렉티브 태그의 import 속성으로 패키지 java.util.Locale을 설정하거나 Locale 인스턴스나 필드를 사용** Locale 감지 메서드* locale 감지 메서드, 특정 날짜, 통화, 숫자 형식 예제

DB - Database [내부링크]

*** Database(이하 DB)- 체계적으로 데이터를 관리할 수 있는 소프트웨어로 정보를 보관하는 창고- 데이터를 다루는 개발에 있어서 반드시 필요하고 중요한 부분- 여러 사람이 공유할 목적으로 방대한 데이터를 체계적으로 정리, 저장하여 데이터를 효율적으로 사용할 수 있다.** DB의 장단점# 장점- 데이터 중복 최소화- 데이터 불일치 문제 해결- 쉬운 데이터 공유- 정보 표준화를 이룰 수 있음- 데이터에 대해 보안성 제공- 데이터의 무결성 유지- 대량 데이터를 빠르게 검색하며 텍스트 이외 다양한 데이터 관리 가능- 애플리케이션 개발을 쉽게 한다.# 단점 - DBMS를 위한 하드웨어가 추가적으로 필요하여 증설에 대해 추가 비용이 발생.......

JDBC - 데이터베이스 커넥션 [내부링크]

*** 데이터베이스 커넥션 - 데이터베이스 커넥션 풀(DBCP) : 애플리케이션에서 필요로 하는 시점에 커넥션을 생성한 게 아닌, 미리 일정한 수의 커넥션을 생성한 다음 필요한 시점에 애플리케이션에 제공하는 서비스 및 관리 체계- DB 커넥션 객체를 생성하는 부분에 대한 비용, 대기시간, 네트워크 연결에 대한 부담을 줄이는 방법이다. - 다수의 HTTP 요청에 대한 쓰레드를 효율적으로 처리할 수 있다. - 커넥션 풀 미사용 : 클라이언트가 요청하는 시점에 DB 연결 - 내용 처리 - DB 종료 - 커넥션 풀 사용 : 커넥션 풀에서 DB 연결 관리, 웹 프로그램에서 JNDI를 이용해 DB 연결 사용** DB 커넥션 풀 동작 과정1) 웹 애플리케이션 서버가.......

애플리케이션 - 초기화 매개변수 [내부링크]

*** 초기화 매개변수- 웹 애플리케이션이 컨테이너에 의해 구동될 때 로딩되는 정보- 공통적으로 참조하는 값을 설정하는 용도로 사용한다.- 초기화 매개변수 값의 공유 범위에 따라 ServletConfig, ServletContext 객체를 통해 사용되며 web.xml에서 설정한다.(서블릿 3.0이상에서는 어노테이션으로 설정 가능하며 어노테이션 사용 시 web.xml에 서블릿을 등록하지 않아도 됨 )** 어노테이션이란?- JEE5부터 새롭게 추가된 문법요소로, 자바 코드에 주석 형식으로 의미 부여- @를 이용한 주석이며, 자바코드에 주석을 달아 특별한 의미를 부여하는 코드이다.- 컴파일러를 위한 정보를 제공하는 용도로도 쓰이며, 컴파일 과정에서 정보를 이.......

SQL(ORACLE 기준) - DDL(Data Definition Language - 데이터 정의어) [내부링크]

*** DDL(Data Definition Language)- 데이터가 담을 구조를 정의하는 언어로, 테이블과 관련이 많다. - 데이터가 담길 테이블을 생성, 수정, 삭제할 수 있다.* []안의 내용은 생략이 가능하다.** CREATE(테이블 생성) - 테이블 생성하는 방법- 작성* CREATE 속성 값- 데이터 입력 시 문자열을 입력할 경우 &#x27; &#x27;를 사용해야한다.** ALTER(수정)- 테이블 수정하는 방법* ALTER 속성 값- 데이터 입력 시 문자열을 입력할 경우 &#x27; &#x27;를 사용해야 한다.** DROP, TRUNCATE(삭제)- 테이블 삭제하는 방법- 삭제 시 테이블의 구조, 데이터 모두를 삭제하는 것이므로 주의가 필요하며 복구 불가능하다.- 테이블 구조 자체를 삭제(DROP.......

JSP / Servlet - 리스너 [내부링크]

*** 리스너- 컨테이너에서 발생하는 특정 이벤트 상황에서 실행되는 장치- 여기서 이벤트란, 어떤 사건이 발생하는 걸 의미한다.- 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스로, 특정 상황 시 행동하는 걸 &#x27;이벤트 핸들링&#x27;이라고 하며 주로 웹 애플리케이션 전체의 설계 관점에서 사용한다. - 그냥 간단하게 특수 상황에 행동하는 장치로 보면 된다.** 리스너(인터페이스) 종류- servlet으로 시작하는 리스너는 javax.servlet 클래스- http로 시작하는 리스너는 javax.servlet.http 클래스- 서블릿 관련 리스너는 주로 애플리케이션 내 특정 행동/상황의 관련 기능 수행- 세션 관련 리스너는 주로 세션 내의 특정 행.......

JSP / Servlet - 리스너(ServletContextListener) [내부링크]

*** 리스너- 컨테이너에서 발생하는 특정 이벤트 상황에서 실행되는 장치- 여기서 이벤트란, 어떤 사건이 발생하는 걸 의미한다.- 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스로, 특정 상황 시 행동하는 걸 &#x27;이벤트 핸들링&#x27;이라고 하며 주로 웹 애플리케이션 전체의 설계 관점에서 사용한다. - 그냥 간단하게 특수 상황에 행동하는 장치로 보면 된다.** ServletContextListener- javax.servlet.ServletContextListener를 임포트 해서 메서드 사용 - ServletContextEvent가 발생 시 호출하는 메서드를 가진 인터페이스- ServletContextEvent 객체를 통해 getServletContext() 메서드를 호출한다.* ServletContextLis.......

JavaScript - 객체(Window, Screen) [내부링크]

*** window 객체- 팝업창 용도로 쓰이는 객체로 팝업내용과 해당 크기, 위치 등을 조절하면서 사용- 팝업창 용도로 쓰인다고 했지만, 사실 모든 객체의 조상이며 생략이 가능하다.** window.onload - 문서를 위에서 아래로 읽는데 스크립트에서 해당 태그를 찾지 못하는 경우가 있어 에러가 발생하는데, 이를 보완한 방법으로 위치 상관없이 뒤로 순서를 미룬다.- 정적 컨텐츠인 html파일에서 태그 위치 상관 없이 동적 컨텐츠를 서비스하는 Javascript, CSS 등을 실행하는 코드를 작성하는 곳* window.onload 예제 1* 출력- 내용에서 볼 수 있듯이 원래는 test1, test2, test3으로 출력되지만 test1은 window.onload안의 내용이므로 맨 뒤로.......

JavaScript - DOM [내부링크]

*** DOM(The Document Object Model)- XML, HTML 문서에 접근하기 위한 API로 W3C 표준 권고안이며 HTML, XML 문서의 프로그래밍 interface이다.- DOM은 문서 내의 모든 요소를 정의하고, 문서의 구조화된 표현(structured representation)을 제공- DOM 구조에 접근할 방법을 제공받아 그들이 문서 구조, 스타일, 내용 등 변경할 수 있게 돕는다.- DOM은 문서를 구조화된 nodes(태그를 객체처럼), property(속성), method(메서드)를 갖고 있는 Object로 표현한다.- 웹 페이지를 스크립트 또는 프로그래밍 언어들에서 사용될 수 있게 연결해 주는 역할을 담당한다.* 결국 웹 페이지의 내용들을 객체화해서 객체 하나하나를 살아있는 물건으로 다.......

JSTL - 핵심 라이브러리 주요 태그(열거식) [내부링크]

*** 핵심 라이브러리 주요 태그** 열거식* []안의 내용은 생략이 가능하다. &#60;c:forEach&#62;- &#60;c:forEach&#62; 조건에 맞춰 안에서 반복 내용을 실행한다. &#60;c:forTokens&#62;- &#60;c:forTokens&#62; 조건에 따라 실행하지만, 자바의 StringTokenizer 클래스 기능을 제공하는 태그이다.- 문자열에서 특정 구분자를 기준으로, 각 문자열을 분할하는 기능을 제공한다.

JSTL - 핵심 라이브러리 주요 태그(URL 관계식) [내부링크]

*** 핵심 라이브러리 주요 태그** URL 관계식* []안의 내용은 생략이 가능하다. &#60;c:import&#62;- &#60;c:import&#62; 를 통해 특정 URL 페이지를 현재 페이지에 포함하는 &#60;jsp:include&#62;와 동일 기능을 수행한다.* &#60;c:import&#62; 속성 값 &#60;c:redirect&#62;- &#60;c:redirect&#62; 를 통해 자동으로 지정된 페이지로 이동한다.- &#60;jsp:forward&#62;, response.sendRedirect()와 동일한 기능을 수행한다.- 주로 매개변수를 넣고 사용할 때 유용하게 사용할 수 있다.* &#60;c:redirect&#62; 속성 값 &#60;c:url&#62;- &#60;c:url&#62; 태그를 통해 해당 url에 요청값을 넣어 불러올 수 있다. - 주로 매개변수를 넣고 사용할 때 유용.......

JSTL - SQL 라이브러리 주요 태그(데이터베이스 연결/ 트랜잭션 처리) [내부링크]

*** SQL 라이브러리 주요 태그** 데이터베이스 연결 처리 * []안의 내용은 생략이 가능하다. &#60;sql:setDataSource&#62; - &#60;sql:setDataSource&#62;를 통해 데이터베이스 서버에 접근한다.* DB에 접근하는 방법 1) 미리 작성된 JNDI 리소스 이용2) driver, url, user, password 값을 입력해서 데이터베이스 서버에 접근* &#60;sql:setDataSource&#62; 속성 값- 모든 값이 필수가 아닌 만큼 프로젝트의 META-INF에 있는 Context.xml에 연결정보를 넣고 사용할 수 있다.** 트랜잭션 처리* []안의 내용은 생략이 가능하다. &#60;sql:transaction&#62;- &#60;sql:transaction&#62;를 통해 데이터베이스의 트랜잭션 기능을 사용할 수 있다.- 한.......

JavaScript - 객체(Math, Date) [내부링크]

*** Math / Date 객체** Math 객체- 숫자 관련 객체- 주로 수 비교나 계산이 필요한 메서드를 사용할 때 쓴다.** Math 객체 주요 메서드- Math.abs(변수) : 절대값 출력- Math.max(변수1 , 변수 2 ...) : 매개변수에서 최대값 출력- Math.pow(변수1, 변수2) : 변수 1을 변수 2만큼 변수 1을 곱합(제곱수)- Math.randow() : 0~1 사이의 랜덤값 출력- Math.ceil(변수) : 소수점 이하 올림- Math.floor(변수) : 소수점 이하 버림- Math.round(변수) : 소수점 이하 반올림- Math.sqrt(변수) : 숫자 제곱근 계산** Date 객체- 날짜 관련 객체- 변수선언방식(ex - var) 변수명 &#x3D; new Date(), new Date(milliseconds), new Date(dataString) .......

JSTL - 핵심 라이브러리 주요 태그(일반 작동) [내부링크]

*** 핵심 라이브러리 주요 태그** 핵심* []안의 내용은 생략이 가능하다. &#60;c:catch&#62;- &#60;c:catch&#62; 안에서 실행되는 코드의 예외를 잡아내는 역할* &#60;c:catch&#62; 속성 값 &#60;c:out&#62; - 간단한 내용 출력 시 사용* out 속성 값 &#60;c:remove&#62;- 해당 scope범위의 값 제거* remove 속성 값 &#60;c:set&#62; - 변수에 값 설정하거나, 객체의 멤버변수 값을 설정 * set 속성 값

JSTL - 핵심 라이브러리 주요 태그(조건식) [내부링크]

*** 핵심 라이브러리 주요 태그** 조건식* []안의 내용은 생략이 가능하다. &#60;c:if&#62;- &#60;c:if&#62; 조건에 따라 안의 내용이 실행된다.- 자바의 if문과 비슷하지만 else문을 지원하지 않는다.* &#60;c:if&#62; 태그 속성 값 &#60;c:choose&#62; / &#60;c:when&#62; / &#60;c:otherwise&#62;- 자바의 if~else if문 or switch문과 비슷하다. - &#60;c:choose&#62;태그 내에 &#60;c:when&#62; 태그가 여러 개 올 수 있다.* &#60;c:choose&#62; 태그 속성 값

JavaScript - 내장 함수(시간) [내부링크]

*** 내장 함수- 기본적으로 제공하는 함수이다.- 일반적으로 사용하는 alert(&#34;경고문구&#34;), console.log(&#34;문자열&#34;)이 해당한다.- 내장함수의 내용에 따라 함수를 변수로 넣거나 함수만 작성해도 실행된다.** 시간 내장 함수- setTimeout(실행영역,시간) : 실행 후의 시간 이후에 실행영역 한번 실행- setInterval(실행영역,시간) : 실행 후 시간마다 실행영역 반복 실행- clearInterval(setInterval변수) : 해당 setInterval변수 반복 제거* 시간 내장 함수 예제 1 (setTimeout / setInterval / clearInterval)* 출력 (setTimeout / setInterval / clearInterval)- setTimeout()의 내용대로 3초, 6초에 출력된 경고창.......

JavaScript - 생성자 함수 / Closure / Prototype [내부링크]

*** 생성자 함수- 자바스크립트에서 없는 클래스를 대체하는 방법- 반드시 new 연산자를 사용, 함수 이름의 첫 글자는 대문자로 시작한다.- 변수선언방식(var, let, const..) 변수명 &#x3D; new 함수명(매개변수); 으로 작성- 이름은 같지만 다른 속성을 가진 다른 객체(인스턴스)를 생성할 수 있다.- 생성자 함수로 인스턴스를 생성하기 전에, 먼저 비어있는 객체를 생성한다.- 여러개의 동일 속성을 가지는 객체를 생성하기 위해 필요하다.- 보통 return 문이 없지만, 객체를 return 시 객체가 반환되고 객체 안의 값을 return 할 경우 해당 값이 반환된다.** 내부 메서드- 생성자 함수가 클래스의 기능을 수행하는 점을 통해 내부 메서드.......

JavaScript - 객체(String, Array) [내부링크]

*** String 객체, Array 객체 - JavaScript 에서 문자열(String), 배열(Array) 객체- String 객체 : 변수 선언방식(예 - var) 변수명 &#x3D; &#34;문자열&#34; 으로 작성- Array 객체 : 변수 선언방식(예 - var) 변수명 &#x3D; new Array(배열 값들) 으로 작성** String 객체 메서드* 길이 / 생성자 / Prototype- String객체명.length : String 객체 길이 반환- String객체명.constructor : String 객체 생성자- String.prototype.변수명 : 객체의 해당 변수를 공유하는 용도* 인덱스 값 출력- String객체명.charAt(해당 인덱스 위치) : 문자열 인덱스 값 반환- String객체명.indexOf(&#34;문자&#34;) : 문자 인덱스 값 반환(중복값 있을.......

JDBC - JDBC 구조 [내부링크]

*** JDBC- Java 프로그램에서 다른 기종 간의 DB를 표준화된 방법으로 접속 할 수 있도록 만든 API 규격- 각 DB에 접속하고, 데이터를 처리하는 방법이 제각기 달라서 이를 자바 애플리케이션에서 표준화된 방법으로 접속 할 수 있도록 설계된 인터페이스- 애플리케이션에서 JDBC 드라이버 관리자를 통해 DB 드라이버를 로드한 다음 해당 DB에 접속한다. - 대부분의 DBMS는 자바를 지원하며 JDBC 드라이버를 제공한다.(없을수도 있음)*** 자바 기반 웹 애플리케이션 개발에서 JDBC 드라이버를 설치하는 방법1) Java 설치 디렉터리\jre파일\lib\ext에 복사하는 방법- JDK를 중심으로 톰캣 뿐만 아니라 다른 애플리케이션 개발에 사용할 목.......

JDBC - Oracle 연결 JSP 프로그래밍 [내부링크]

*** JDBC - Oracle 연동 프로그래밍- Oracle을 사용하여 DB안의 데이터를 JSP 페이지에서 사용해보자- Oracle 연동이 되어 있다는 가정 하에 실행한다.(필자는 오라클 11g 연동)** 이번 프로그래밍에서 필요한 파일들 jdbcExam01.sql : DB에 필요한 테이블을 작성 파일 jdbcExam01.jsp : DB에 값 넣고 DB값을 표출하는 페이지1) WebContent - Exam05(JDBC) - New - Other - sql파일 next버튼 클릭 1-1 ) file name에 파일명을 작성한 뒤, 하단 3줄에 DB type(오라클 버전) / 연결할 계정 이름 / db 이름을 선택(주로 xe로 되어있음)한 후 finish를 해준다.2) 해당 그림과 같이 나온 sql 파일에서 DB 연동확인을 위해 jdbcExam01.jsp에.......

JSP - 표현언어 [내부링크]

*** 표현 언어(Expression Language, 이하 EL)- MVC 패턴에 따라 뷰 역할을 하는 JSP를 더욱 효율적으로 만들기 위한 방법- 빈즈 속성 값을 더욱 쉽고 제약을 덜 받기에 코드를 단순화하고 간단히 데이터를 표현한다.- JSTL(JSP Standard Tag Library)이 표현 언어에 포함된다. ** EL 특징- &#x27;$&#x27;로 시작한다하며 모든 내용은 &#x27;{표현식}&#x27;으로 작성되며 값이 없을경우 출력 X- 표현식에는 기본적으로 &#x27;변수 이름&#x27; 또는 &#x27;객체이름.멤버변수이름&#x27;으로 구성- 쿠키, 기본 객체 속성 등 JSP를 위한 표현언어의 기본 객체 / 자바 클래스 메소드 호출 기능 / 기본적인 연산을 제공한다.- ${name}의 형태로 객.......

JSP - 커스텀 태그 [내부링크]

*** 커스텀 태그- JSP의 특징적 요소, JSP 페이지에서 반복적인 프로그램 로직을 캡슐화하기 위해 만들어진 태그- HTML 문서(브라우저에 의해 해석)는 커스텀 태그를 구현할 수 없는 점을 통해 JSP(서버에서 해석)에서 커스텀 태그를 구현한다.- 빈즈의 아쉬운 점인 데이터를 화면에 표시하기 위해 필요한 프로그램적인 요소를 줄이는데 크게 도움이 되지 않은 점을 커스텀 태그가 보완한다.(반복 출력같은거)- 즉, 비즈니스 로직으로부터 화면 표현을 분리 가능 / 비즈니스 로직의 캡슐화 / MVC패턴 구현을 상대적으로 쉽게 구현할 수 있다.** 커스텀 태그를 개발하는 방법1) 태그 파일 기반의 개발 방법(간단한 파일에 적합)- 많은 화면을 생.......

JSP - JSTL(JSP Standard Tag Library) 설치, 구성, 적용법 [내부링크]

*** JSTL(JSP Standard Tag Library)- 태그를 사용해서 JSP코드를 관리하는 라이브러리로 가독성이 좋아진다.- 사용하려면 라이브러리를 다운받아 추가하며, JSP 페이지에서 선언해줘야한다.** JSTL 설치 방법1) mavenrepository 홈페이지 or 아파치 홈페이지로 가서 해당 버전에 맞는 jar파일 or 아파치의 JSTL 구현체를 다운로드한다.(필자는 mavenrepository홈페이지에서 다운로드함)- mavenrepository 홈페이지- 아파치 홈페이지- 선택할 버전의 빨간 부분을 클릭 한 다음 2) 다운로드 받은 파일을 압축풀기한 후, 압축푼 폴더의 lib폴더 위치의 jstl.jar 파일을 찾아 적용할 프로젝트 - WEB-INF - lib 폴더로 붙여 넣는다.3) .......

DB - Oracle SQL Developer DB 접속 및 테이블 생성, 수정하기 [내부링크]

*** Oracle SQL Developer DB 접속 / 테이블 생성, 수정1) 맨 좌측 상단쯤에 접속 창의 &#x27;+&#x27;를 클릭2) 아래와 같이 이름과 해당 DB의 계정 사용자 이름, 비밀번호를 작성한 뒤 호스트 이름에 자신의 ip 주소 또는 &#x27;localhost&#x27;를 입력하고 포트에 DB port 번호, SID는 DB에 저장된 SID(주로 XE or ORCL)를 입력한 다음 테스트를 실행해보자.2-1) 테스트를 실행한 뒤 상태 : 성공이 뜨면 접속할 수 있으며 접속 버튼 클릭 시 다음 화면과 같이 뜬다.3-1) 접속된 DB의 워크시트에 &#x27;show user;&#x27;를 입력한 뒤 드래그해서 &#x27;ctrl+enter&#x27;를 눌러준다.- 현재 user를 보여준다.4) 이제 사용자.......

JSP - Bean을 이용한 로그인 판별 구현 1 [내부링크]

*** Bean을 이용한 로그인 판별 구현 1- 현재예제는 Dynamic Web Project의 기본 설정이 된 상태입니다. Dynamic Web Project의 기본설정을 알고 싶다면 아래 페이지를 참조해주세요. login_form.html : 로그인 폼이 작성된 페이지 login.jsp : 로그인 폼 작성 페이지로부터 값을 받은 페이지 BeanClass01 class : 로그인 시 필요 beans(아이디, 비밀번호)를 저장한 class*** Bean을 이용한 로그인 구현 1 예제1) WebContent의 특정 폴더에 class 추가(WebContent - 특정 폴더 - New - Others - class)2) personal.study라는 패키지에 BeanClass01 class를 생성한다.(beans class로 사용할꺼기 때문에 public st.......

JavaScript - 내부 함수 [내부링크]

*** 내부 함수- 내부에 존재하는 함수로 함수 실행 시 그 안의 내용을 사용하는 방법(내부에서 선언된 변수를 외부에서 참조할 수 있음)- 자바스크립트의 함수는 리턴 타입을 명시하지 않기 때문에 return으로 값을 반환받는데, 이를 이용한 방법도 포함** 함수 내부 함수- 전체 함수(1번째) 내에 있는 내부함수(2번째 이하)로 사용하려면 전체 함수(1번째) 해당 내부 함수(2번째 이하) 바깥에서 실행해야한다.* 함수가 반환하는 내부함수- 익명함수가 반환 &#x3D; 내부함수 일 경우, 해당 내부함수를 쓰기 위해 함수 객체 &#x3D; 함수명()으로 생성해야 한 뒤 함수 객체(매개변수값)를 써야 함수 내의 내부함수를 사용할 수 있다.* 내부함.......

SQL - WHERE 연산자, GROUP 연산 [내부링크]

*** WHERE문 연산자1) 비교 연산자&#x3D; : 같은 값 조회&#60; : 작은 값 조회&#60;&#x3D; : 같거나 작은 값 조회&#62; : 큰 값 조회 &#62;&#x3D; : 같거나 큰 값 조회!&#x3D;, ^&#x3D;, &#60;&#62;, NOT 칼럼명 &#x3D; : 같지 않는 것을 조회NOT 칼럼명 &#62; : 크지 않는 것을 조회2) 논리 연산자조건1 AND 조건2 : 양쪽 조건이 참이여야 한다.조건1 OR 조건2 : 한쪽 조건이라도 참이면 참이다.NOT 조건 : 조건의 반대3) SQL 연산자 - LIKE &#x27;비교 문자열&#x27; : 비교 문자열을 조회하는데 비교 문자열의 내용에 &#x27;_&#x27;는 한자리를 의미하며 &#x27;%&#x27;는 모든 것을 의미한다.- (NOT) BETWEEN 값1 AND 값2 : 값1과 값2 사이의 값(N.......

SQL - 시퀀스 [내부링크]

*** 시퀀스 - 값이 일정한 규칙에 의해서 연속적으로 자동 증가하는 값 --&#62; DB 객체- 테이블에 값을 넣을 때 순차적인 번호를 입력할 경우 입력 시 기존 값+1이 필요한데 시퀀스는 이를 보완한 방법이다.** 시퀀스 생성 ** 시퀀스 사용 예시1) 먼저 시퀀스를 적용할 테이블을 생성한 뒤 시퀀스를 생성하여 해당 값을 테이블에 적용해보자- 시퀀스의 숫자는 시퀀스명.NEXTVAL를 통해 해당 시퀀스의 값이 순차적으로 들어간다.2) 시퀀스 값이 현재 3이였으니 조회를 해보자- 시퀀스명.NEXTVAL, 시퀀스명.CURRVAL로 알 수 있다.- &#x27;SELECT 시퀀스명.NEXTVAL FROM DUAL;&#x27; 이란 문구를 실행하면 가상 테이블에서 시퀀스의 값을 볼 수.......

자바_용어(1) [내부링크]

자바_용어(1)기계어 : 컴퓨터(운영체제)가 이해하고 실행할 수 있는 0과 1로 이뤄진 코드프로그래밍 언어...

자바_변수(1) [내부링크]

변수 : 값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름이며 선언 후 어떤 타입의 데이터를 저장하...

자바_타입(1) [내부링크]

리터럴 : 소스 코드에서 프로그래머에 의해 직접 입력된 값&#x27;&#x27; : 감싼 하나의 문자 리터럴을 저장...

자바 기초 1 [내부링크]

20.08.24 이클립스 도구에서 프로젝트 클릭 후 f2 누르면 이름 변경 가능 c:java-emp-class-0824 // 자바 ...

자바 기초 2 [내부링크]

// 자바의 정수형 기본 타입은 int, 실수형 기본 타입은 double이다.* casting은 형 변환으로 타입을 변환...

자바 기초 3 [내부링크]

* 자바 연산자- 산술연산자- 증감연산자- 관계 연산자 - 논리 연산자 - * 문제 1. 계산할 값 1,2를 입...

자바 기초 4 [내부링크]

* 문제 1. 3개의 수를 입력하여 순서대로 출력하시오.또는 * 문제 2. 3, 5의 배수인지 확인하는 내용을 ...

자바 기초 5 ( For문, Case문 ) [내부링크]

* 반복문 - 반복문을 통해 반복적인 일을 한번에 해결하는 방법 - for(초기문; 비교문; 증감문){  } 으로 표...

자바 기초 6 (for문) [내부링크]

* 문제 1) 1부터 10까지의 합을 구하시오. * 문제 2) 500부터 1000까지의 홀수 합을 구하세요. * 문제 3) 1...

sql group함수, window 함수 [내부링크]

그룹함수 컬럼 / 값 &gt;&gt; col1/3, col2/41) ROLLUP(col1,col2) &gt;&gt; (col1(1),1,2,3,4).col1...

자바 기초 6-2 (for문) [내부링크]

* 기초 6의 문제 변형 풀어보기** for문으로 별 표시하기* 문제 1) 역삼각형 - 처음에 모든 값 출력- 행...

자바 기초 7 ( for문, while문, do~while문, return, continue) [내부링크]

문제 1) 출력 개수를 순차적으로 늘린 채 출력하고, 출력 개수를 줄여서 출력되는 반복문 사용(중복 f...

자바 기초 8(for문, Math.random(), 배열, method) [내부링크]

* 문제 1) 입력받은 문자열을 통해 각 행별 숫자만큼 *표시하기 - &#x27;0&#x27;은 아스키 코드값으로 48...

파이썬 기초 번외 1(method 작성, 입력, 출력) [내부링크]

* method를 사용하는 이유 : 똑같은 내용을 반복 사용할 경우를 대비- 메소드는 입출력 유무에 따라 4가지...

자바 기초 9 (배열, 2차원 배열, 로또 번호 비교 ) [내부링크]

* 배열- new를 통해 heap영역에 배열의 공간을 만든다. &gt;&gt; 객체화- 주소값을 통해 값을 변경 할 수 ...

파이썬 기초 1( for문, while문 ) [내부링크]

* 해당글은 python 3 버전 기준입니다.* for문(반복문)- for 변수명 in range(변수명): 그림과 같이 들여쓰...

파이썬 번외 (로또 생성) [내부링크]

앞서, 이 글을 작성하기 전에 BlockDMask님에게 감사를 전합니다.다들 누구나 성인이 되면 로또 한번은 ...

자바 기초 10 (배열, method, 매개변수) [내부링크]

* 고정 크기 배열과 동적 할당 - 배열 타입 변수명 &#x3D; new 배열타입[값][값] 은 입력한 채로 초기화- ...

프로그래밍 사이트 [내부링크]

* 프로그래밍 대회나 프로그래머들을 위한 연습문제들이 있다.* 수정 날짜 : 2020.09.171. BAEKJOO...

파이썬 문제 1(for문, 파일의 소스코드에서 탭을 공백 5개로 바꾸기) [내부링크]

* 현재, 필자는 파이썬을 문제로 공부하기에 파이썬 기초가 매우 부족한 상황이며 초보자의 기준으로 작성...

파이썬 기초 2( 입출력, 자료형, 비교 연산자, if문 ) [내부링크]

* 입력 : input(&quot;입력할 내용 &quot;)* 출력 : print(&quot;출력하는 내용&quot;)- input( )를 통해...

파이썬 기초 3 (함수, class와 인스턴스) [내부링크]

* 함수- 실행 시 어떤 행위를 시작하고 특정 행동을 반복해서 나타날 때 사용하는 방법- 작성에 따라 입력...

자바 기초 11( String, 자주 쓰는 method, 전역/지역 변수, call by value, call by reference) [내부링크]

* String 객체는 수정 불가능하다.사진 설명을 입력하세요.String s &#x3D; new String(&quot;Hello&q...

자바 기초 12(Call by value, Call by reference, 재귀함수, DP(동적계획법), 메모이제이션, factorial ) [내부링크]

* 문제 1) 값 전달과 주소 전달 방식을 통해 변수 2개 값을 서로 바꿔주시오.* 문제 2) 입력한 문자열 거꾸...

자바 문제 1) 피보나치 함수 - BAEKJOON 1003 [내부링크]

# 문제는 BAEKJOON 사이트에서 푼 문제* 입력 조건 - 첫째 줄에 테스트 케이스의 개수 T가 주어...

자바 문제 2) 다리짓기 - BAEKJOON 1010 [내부링크]

# 문제는 BAEKJOON 사이트 문제/*한 도시를 동쪽과 서쪽으로 나누는 큰 강이 흐르고 있다.강을 ...

자바 기초 13 ( 재귀함수, class, 접근제한자, 캡슐화 ) [내부링크]

* 자바 기초12에서 배웠듯이 재귀함수는 자기 자신을 호출하는 함수* 호출을 통해 썻던 method를 다시 사용...

파이썬 기초 4 ( list, tuple, dictionary ) [내부링크]

* list- 특정 순서가 있는 항목의 모음- []로 표현하며 안에 값(요소) 표현 할 수 있다.- 접근 방법 중 하...

자바 기초 14( class변수-field, 객체지향언어(1), final, get/set method ) [내부링크]

* class의 변수를 field라고 한다.- 참조 변수를 통해 field값을 초기화 할 수 있다.* 객체 지향 언어의 ...

자바 문제 3) 행성간 이동거리 구하기 - BAEKJOON 1011 [내부링크]

# 문제는 BAEKJOON 사이트 문제https://www.acmicpc.net/problem/1011* 입력 조건- 첫째 줄에 ...

자바 기초 15(생성자, 생성자(객체), final, static ) [내부링크]

* 문제 1) 특정 값을 생성자를 통해 넣고, 입력한 값과 특정 값을 비교하시오.- 문자열만 비교할 땐 &#x3D...

자바 기초 16 (class 객체 배열 사용, try-catch-finally , Exception, overloading(오버로딩) ) [내부링크]

* 문제 1) Member 클래스에 입력받은 이름과 전화번호를 출력하세요.(단, 클래스 배열을 선언하여 출력한...

자바 기초 17( static final, static method, 상속) [내부링크]

* static final - 한번 주어진 값은 절대 바뀌지 않음- 고정된 값으로 다른 값과 비교하는 프로그램을 구상...

자바 기초 18( 상속_super, 오버라이딩(overriding), 추상클래스(abstract class) ) [내부링크]

* 상속- 부모 생성자에서 기본 생성자가 정의되어있지 않아 에러 발생- 자식이 부모 생성자 호출 &gt;&gt; ...

자바 기초 19( 다형성, 오버로딩, 오버라이딩) [내부링크]

* 다형성- 특정 내용을 반복한다고 했을 때, 타입이 다름에도 불구하고 상속받은 타입에 따라 다양한...

자바 기초 20(추상클래스, instanceof, 인터페이스) [내부링크]

* 추상클래스- 번외) [x:1,y:2] [x:5,y:9] 출력하기* instanceof- 타입 확인법- 위의 내용과 같이 객체 i...

자바 기초 21 (래퍼런스 타입, 컴파일 에러, 런타임 에러, 외부 라이브러리 사용법, StringBuilder, Object class, Wrapper class) [내부링크]

* 래퍼런스 타입 - 변수에 참조값을 저장하여 참조를 통해 값을 사용하는 방법- 내용을 보면 알 수 있듯이 ...

자바 기초 22 (Thread, Runnable, Frame, try-catch-finally, RuntimeError ) [내부링크]

* thread : 프로그램의 실행 흐름 - 하나의 프로그램 내에서 독립적으로 실행하는 method - single thread ...

자바 문제 4) 유기농 배추 - BAEKJOON 1012 [내부링크]

https://www.acmicpc.net/problem/1012* 문제 내용- 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추...

자바 기초 23 (Collection Class - List ) [내부링크]

* 자료구조 class- JDK 라이브러리 자료구조 class들* Collection Class- 컬렉션은 기본 데이터형이...

자바 문제 5) 수열 정렬 - BAEKJOON 1015 [내부링크]

https://www.acmicpc.net/problem/1015* 문제 내용 - P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함...

자바 기초 24 (Hash) [내부링크]

* Hash란?- HashMap&lt;key type,value type&gt; 변수 명 &#x3D; new HashMap&lt;key type,value t...

자바 문제 6) 제곱 ㄴㄴ 수 - BAEKJOON 1016 [내부링크]

https://www.acmicpc.net/problem/1016* 문제 내용 - 어떤 수 X가 1보다 큰 제곱수로 나누어 떨어지지 않...

자바 기초 25 (Collection Class - Set ) [내부링크]

* Set- 저장 순서가 보장되지 않고, 중복 저장하지 않는 인터페이스* HashSet- 해싱된 Set 타입으로 ...

자바 기초 26 ( 성적 입/출력 Method, Hashtable, HashSet 예제 (Interface 사용 ) [내부링크]

* 문제 1. 성적과 이름을 입력하여 순위를 출력하는 기능을 작성하시오. (단, ArrayList로 명단을 작성한...

자바 기초 27 (Hashtable 예제 2(Interface 사용)) [내부링크]

* 문제 1) hashtable로 구단에 소속된 선수 이름,연봉을 작성한 뒤 출력하거나 삭제하고, 구단 이적이 가능...

자바 기초 28 ( mvc (model - dao, vo), 커피 주문 관리 프로그램 ) [내부링크]

* mvc(model view Controller) : 각종 클래스를 저장하고 제어하면서 보는 설계 방식으로 DB(데이터베이...

자바 기초 28-2 ( mvc (model - dao, vo), 커피 주문 관리 프로그램2 ) [내부링크]

*** 자바 기초 28의 커피 주문 관리 프로그램을 기준으로 한 주문 번호에 다수의 커피 메뉴, 그로 인한 잔 ...

자바 문제 7) 소수 쌍 - BAEKJOON 1017 [내부링크]

******* 이 글은 런타임 에러로 인해 미완성된 풀이법입니다. *******https://www.acmicpc.net/problem...

자바 기초 29(윈도우 프로그램(java), Awt, Swing, (J)Frame, (J)Label Container, Layout ) ) [내부링크]

*** 윈도우 프로그램의 작성 방법- 프레임 안에 타이틀(제목), contentpane(내용 공간), 라벨(내용)으로 ...

자바 문제 8) 체스판 다시 칠하기 - BAEKJOON 1018 [내부링크]

https://www.acmicpc.net/problem/1018****************** 도움 주신 사용자 뜸부깅님, 갑사합니다.*******...

자바 문제 9) 책 페이지 BAEKJOON 1019 [내부링크]

https://www.acmicpc.net/problem/1019* 풀이법 출처 https://www.slideshare.net/Baekjoon/baekjoon-on...

자바 기초 30(ActionListener) [내부링크]

*** ActionListener - 특정 행동 발생 시 실행(이벤트)되는 인터페이스- 사용방식은 여러가지가 있음 1. ...

자바 기초 31(KeyListener) [내부링크]

* KeyListener- 이전 ActionListener와 같이 특정 이벤트에 대해 반응하는 인터페이스이다.- 특정 이벤...

자바 문제 10) 디지털 카운터 BAEKJOON 1020 [내부링크]

************ 이 글은 메모리 부족으로 인해 미완성된 풀이법입니다.********** 문제 내용- 지민이는 매 ...

자바 기초 32 (GUI프로그램 생성) [내부링크]

*** GUI프로그램 : 그래픽 유저 인터페이스의 줄임말, 사용자가 눈으로 보고 사용하기 쉽게 만든 프로그...

파이썬 기초 5 (문자열) [내부링크]

*** 문자열 - 문자들의 집합으로 파이썬에서 &#x27;&#x27; 또는 &quot;&quot;로 선언한다.- 파이썬에서 문...

자바 문제 11) 회전하는 큐 BAEKJOON 1021 [내부링크]

https://www.acmicpc.net/problem/1021* 문제 내용- 지민이는 N개의 원소를 포함하고 있는 양방향 순환 ...

자바 기초 32-2(GUI프로그램 생성 2) [내부링크]

*** GUI 프로그램 ** choice- 클릭하면 명단이 나와서 선택이 가능함(콤보박스와 비슷)- 콤보박스와 달...

Apache-tomcat 설치 (Eclipse - Dynamic Web Project(Server)) [내부링크]

*** Dynamic Web Project - 말 그대로 동적인 웹 프로젝트- 웹 어플리케이션을 실행할 서버와 연동하여 ...

파이썬 기초 6(module) [내부링크]

*** module- 작성한 코드들을 모아둔 파일을 재사용하며, 속도나 유지보수 측면에서 매우 바람직한 작은 프...

파이썬 기초 7(file) [내부링크]

*** file- 말 그대로 파일, 읽고 쓰고 하기- 읽거나 쓰려면 일단 파일에 접근해야함. file 경로에 맞춰 열...

HTML5 / CSS 기초 1(tag / table) [내부링크]

*** HTML- 웹 페이지의 구조를 브라우저로 볼 수 있게 하는 마크업 언어HTML 파일의 소스- window ...

HTML5 / CSS 기초 2 (img, audio, video, source, form, input, radio, checkbox tag, HTML style) [내부링크]

*** img tag- 이미지 파일 태그*** audio tag- 음성 파일 태그*** video tag- 비디오(동영상) 파일 태...

파이썬 기초 8(객체 지향 프로그래밍 1 - Class) [내부링크]

*** 객체 지향 프로그래밍- 함수형 프로그래밍과 같이 전역 상태를 제거하는 방식으로 절차적 프로그래밍 ...

파이썬 기초 9 (객체 지향 프로그래밍 2 - 캡슐화, 추상화, 다형성) [내부링크]

*** 캡슐화- 작성한 코드를 우리가 흔히 아는 캡슐형태로 만든 것이다.- 우리가 캡슐 안의 화학적 반응을...

파이썬 기초 10 (객체 지향 프로그래밍 3 - 상속) [내부링크]

*** 상속- 부모로부터 자식이 어떤 것을 물려받아 자신의 것으로 사용하는 걸 말한다.- 상속은 메서드나, ...

파이썬 기초 11(객체 지향 프로그래밍 - class, instance 변수, Magic Method) [내부링크]

*** 클래스 변수- 클래스 변수는 클래스를 통해 만드는 객체, 클래스 정의에 따라 만드는 객체를 말한다.- ...

HTML5 / CSS 기초 3 (div, span tag, CSS, CSS파일 연결 및 경로 작성법 ) [내부링크]

*** div- div : block형태의 영역*** span- span : inline 형태의 영역* div, span 예제 1- 출력- div...

파이썬 번외 2 - method 종류 [내부링크]

*** method 종류1. 특징 method2. 숫자 method3. 문자 method(문자열도 포함)4. 배열 method5. 번외** 1....

파이썬 기초 12(try-except-finally) [내부링크]

*** try-except-finally- 자바의 try-catch-finally와 같은 예외 제외 메서드- 말 그대로 실행 도중 발생할...

파이썬 기초 13 (File2, Directory1) [내부링크]

*** File2** os.path.getsize()- os.path 모듈의 getsize()를 임포트해야한다.- 지정한 파일 크기를 구...

파이썬 기초 14 (directory2) [내부링크]

*** Directory2** os.mkdir()- os모듈의 mkdir()- 새로운 디렉터리를 만드는 방법(mk는 &#x27;make - 만...

JSP / Servlet 기초 1 - 웹 서버, 서블릿 컨테이너 [내부링크]

*** JSP / Servlet ** 공통점- 자바를 사용하여 웹을 만들기 위해 필요한 기술중 하나- 일반적으로...

HTML5 / CSS 기초 4 (css 선택자 1) [내부링크]

*** css 선택자- 선택자란? 특정한 html 태그 요소를 선택할 때 사용하는 표기 방식 - 원하는 태그를 선택...

JSP / Servlet 기초 2 - WAS, JSP 프로그래밍 1 [내부링크]

*** JSP 프로그래밍 1** WAS - Web Application Server의 준말로, 웹 서버와 웹 컨테이너를 포...

HTML5 / CSS 기초 4 (css 선택자 2) [내부링크]

*** css 선택자- 선택자란? 특정한 html 태그 요소를 선택할 때 사용하는 표기 방식 - 원하는 태그를 선택...

JSP / Servlet 기초 3 - Servlet 프로그래밍 1 [내부링크]

*** Servlet 프로그래밍 1** Servlet - Servlet의 내용은 위 페이지에 서술되어있다.* Servlet ...

JSP / Servlet 기초 4 - HttpServlet 클래스 [내부링크]

*** Servlet 프로그래밍 2*** HttpServlet 클래스- 서블릿과 클라이언트 사이를 연결해주는 중요한 클...

파이썬 툴 - PyCharm 설치 [내부링크]

*** PyCharm(파이참)- 파이썬을 간편하게 개발할 수 있게 만든 개발툴- 코드 실행과 패키지 설치가 간단...

파이썬 툴 - PyCharm 설정 [내부링크]

*** PyCharm 설정1. 파이참 실행 이후 ok 클릭2. 기본 사용 테마를 선택 후 next 클릭(작업 할때 어떤 ...

JSP - 주석 / 지시자 [내부링크]

*** 주석 - 프로그램 실행 시 해당 코드의 내용을 알려주는 개발자의 의도가 담긴 글- 때론 주석 내용을 ...

JavaScript - alert(), prompt(), confirm(), console.log(), 배열 [내부링크]

*** JavaScript - 객체 기반의 스크립트 프로그래밍 언어 - 웹 문서를 좀 더 동적으로 표현하기 위해 만...

JavaScript - if, switch, for, while, break [내부링크]

*** if / switch / for / while / do-while / continue / break** if- 해당 조건에 맞춰서 실행하는 조건...

JSP Action Tags 1 - jsp:param / jsp:forward [내부링크]

*** JSP Action Tags- JSP 페이지간 흐름 제어- 자바 애플릿 / 자바 빈즈 컴포넌트와 JSP 상호...

JSP - 선언과 표현식, 스크립트릿 [내부링크]

*** 선언 - JSP 스크립트 요소의 대표적인 특징- 선언이 프로그램 요소를 구현할 때 도움이 되지만, ...

JavaScript 기초 3 - 변수 [내부링크]

*** 변수** 변수의 특징- 객체이며 값을 저장할 수 있는 공간- 선언 또는 초기화를 통해 해당 변수를...

JSP Action Tags 2 - jsp:param / jsp:include / jsp:plugin [내부링크]

*** JSP Action Tags- JSP 페이지간 흐름 제어- 자바 애플릿 / 자바 빈즈 컴포넌트와 JSP 상호...

JSP Action Tags 3 - jsp:useBean / jsp:setProperty / jsp:getProperty [내부링크]

*** JSP Action Tags- JSP 페이지간 흐름 제어- 자바 애플릿 / 자바 빈즈 컴포넌트와 JSP 상호...

JSP 내장 객체 1 - request / response / session / out [내부링크]

*** JSP 내장 객체- JSP내에서 선언하지 않고 사용하는 객체(request나 response같은 JSP가 서블...

JSP 내장 객체 2 - application [내부링크]

*** JSP 내장 객체- JSP내에서 선언하지 않고 사용하는 객체(request나 response같은 JSP가 서블...

웹 애플리케이션 [내부링크]

*** 웹 애플리케이션 - 웹 서비스를 제공하기 위해 만들어진 프로그램- .exe, .com 파일을 클릭 할 때 프로...

jQuery 설치 및 사용법 [내부링크]

*** JQuery 설치 JQuery파일을 다운받아서 사용하기(배포용 프로젝트에 적합하며 이 방법을 권장...

JSP - session, application 내장 객체로 글 작성 페이지 구현하기 [내부링크]

*** session, application을 이용하여 글 작성 페이지를 구현하기- 현재예제는 Dynamic Web Project의...

파이썬 툴 - PyCharm 프로젝트 생성 [내부링크]

*** PyCharm 프로젝트 생성1. new Project 클릭 2. 자신이 설치할 경로 선택(새 파일을 만들려면 위...

DB - MySQL 8.0.22 64bit 설치 [내부링크]

*** MySql 설치1) 해당 사이트로 이동해서 64bit download를 클릭2) 필자는 윈도우OS 64bit를 사용...

JSP - JAVA Beans / EJB(Enterprise Java Beans) [내부링크]

*** Beans(이하 빈즈)- 복잡한 코드로 구성된 내용을 빈즈로 분리시켜 재사용이 가능한 컴포넌트로 제품의 부품과 같은 구성원 역할을 한다.(객체)- 크게 JAVA Beans와 EJB(Enterprise JavaBeans)가 있다.- 기본 생성자(디폴트 생성자)가 반드시 존재해야한다.- 속성을 접근할 수 있는 getter/setter 메서드를 사용해야한다.- private로 멤버변수를 선언해서 클래스 외부에서 접근할 수 있는 것을 막는다.** Java Beans- 자바에서 POJO(Plain Old Java Object - 특정 기술이나 프레임워크에 종속적이지 않고, 기본 생성자와 멤버변수에 대한 getter/setter메서드를 제공하고 직렬화할 수 있는 클래스)의 개념을 통해 만들어진 컴포넌트.......

JavaScript - 함수 특징 / 명시적 함수 / 익명 함수 [내부링크]

*** 함수** 함수의 특징- function 함수명(매개변수1,매개변수2...){ 함수 내용 } - 자바스크립트는 자바와 달리 인자수가 달라도 실행이 되지만 사용자가 원하는 값을 얻기 어렵다.- 함수 중복 선언 시 위치에 맞춰서 실행된다.(덧붙임이 가능한 점)- 함수를 변수로 선언할 경우 Object로 선언되며, 해당 매개변수 또는 반환값에 따라 다양하게 사용할 수 있다.- function 함수명(){ return arguments; }를 변수로 선언한 뒤 함수명(1,2,3,4..)를 console.log(변수명)으로 실행하면 해당 1,2,3,4.. 가 출력된다.( 하단 예제 참조 - 매개변수가 없는 함수 사용) ** 명시(선언)적 함수 생성- 함수명을 정의한 함수를 생성- function.......

웹 애플리케이션 - 컨테이너 [내부링크]

*** 컨테이너 - 웹 애플리케이션을 실헹시키기 위한 환경- 사용자 요청을 받아들이고 처리하는 역할을 수행하는 서버 프로그램- 컴퓨터의 성능에 따라 서비스 서버 내용이 불안정한데, 이를 보완한 프로그램** 컨테이너의 개발환경 - 대부분의 프로젝트는 한 명 이상의 개발자와 컴퓨터가 사용하는데 프로그램 소스를 관리하는 것도 매우 중요하며 운영 서버에서는 애플리케이션을 수정하거나 수정할 수 없도록 해야한다.- 소스 수정은 반드시 개발자의 컴퓨터에서 이뤄져야 하며, 버전 관리 솔루션에 의해 전체 팀과 공유되고 버전 업 시 배포한다.** 웹 애플리케이션의 배포방식(tomcat 기준 시)1) 톰캣 디렉터리에 직접 파일로 배포.......

SQL - sqlplus 창을 이용한 sql 문 실행 [내부링크]

*** SQL(구조 질의 언어)- 관계형 데이터베이스 관리 시스템(RDBMS)를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어- 데이터를 삽입, 삭제, 수정, 검색 등 다양한 기능을 수행하며 기능 수행에 있어서 권한 부여, 몰수 등.. 이용 조건을 걸 수 있다.- 관계형 데이터베이스(RDB)이므로 행과 열로 구성되며 테이블이란 행렬에서 칼럼명 또는 칼럼 값을 통해 내용을 찾는 방법을 제시해 준다.** SQL을 작성하기 위해 계정 만들기1. SQL Plus 또는 실행 창(cmd)에서 sqlplus를 입력한 뒤 해당 아래 화면처럼 관리자로 로그인하기2. &#x27;CREATE user 계정 이름 identified by 비밀번호;&#x27;를 입력3. 해당 계정 이름에 connect .......

SQL(ORACLE기준) - DML(Data Manipulation Language - 데이터 조작어) [내부링크]

*** DML(Data Manipulation Language)- 데이터를 조작하는데 사용하는 명령어 - 데이터를 삽입, 수정, 삭제, 검색할 수 있다.** INSERT(데이터 삽입) - 테이블에 데이터를 입력하는 DML문- 작성 : &#x27;INSERT into 테이블명(컬럼1, 컬럼2...) values (컬럼값1, 컬럼값2..);&#x27;- 데이터 입력 시 문자열을 입력할 경우 &#x27; &#x27; 를 사용해야한다.- 만약 특정 테이블의 모든 칼럼에 삽입하는 경우 칼럼명을 생략할 수 있다. 모든 칼럼에 입력하기- &#x27;INSERT into 테이블명 values(칼럼값1, 칼럼값2...);&#x27; SELECT문으로 입력하기- &#x27;INSERT into 테이블명 SELECT * FROM 테이블명&#x27;;- 입력되는 테이블이 미리 생.......

JSP 내장 객체 3 - pageContext / config [내부링크]

*** JSP 내장 객체- JSP내에서 선언하지 않고 사용하는 객체(request나 response같은 JSP가 서블릿 형태로 자동 변환된 코드 내에 포함된 멤버변수, 메서드 매개변수 등의 각종 객체)- 스크립트릿에서 사용하며, 내장객체를 통해 데이터를 공유하거나 사용한다.- 특정 클래스의 인스턴스 형태로서, 해당 클래스의 메서드를 이용해 컨테이너가 제공하는 기능을 사용** JSP 내장 객체 종류 ( pageContext, config ) pageContext- 현재 JSP 실행에 대한 context인스턴스의 참조 변수- javax.servlet.jsp.JspContext 객체 타입 - Http 요청을 처리하는 제어권을 다른 페이지로 넘길 때 사용한다.- 다른 모든 내장객체에 대한 프로그.......

JSP 내장 객체 4 - page / exception [내부링크]

*** JSP 내장 객체- JSP내에서 선언하지 않고 사용하는 객체(request나 response같은 JSP가 서블릿 형태로 자동 변환된 코드 내에 포함된 멤버변수, 메서드 매개변수 등의 각종 객체)- 스크립트릿에서 사용하며, 내장객체를 통해 데이터를 공유하거나 사용한다.- 특정 클래스의 인스턴스 형태로서, 해당 클래스의 메서드를 이용해 컨테이너가 제공하는 기능을 사용** JSP 내장 객체 (page, exception) page- 현재 JSP 클래스 정보를 보거나 JSP에서 자기 자신(this)을 참조할 때 사용한다.- java.lang.Object 객체 타입- page 참조 변수를 사용하지 않고도 생성된 서블릿 클래스의 멤버변수, 메서드에 직접 접근 할 수 있어 거의 사.......