-
HTML에서 JavaScript 변수 다루기: let vs var vs windowfront-end 2024. 1. 24. 19:15
// test.js console.log(‘@@TEST’, userId); // test2.js console.log(‘@@TEST2’, userId); 위 코드는 어떻게 동작할 것으로 예상하는가? test.js에서 userId가 선언되기도 전에 접근해서 에러가 날것처럼 보이지만 에러는 나지 않는다. 결과는 다음과 같다 undefined 늘푸른개발자 왜일까? 왜 에러가 나지 않고 정상적으로 동작했는가? 변수가 선언되기도 전에 호출했는데 어째서 동작하는가? 라는 질문이 나온다. 그게 정상이다. 그럼 자바스크립트가 비정상인가? 그렇다 자바스크립트의 var가 비정상적이다. 일반적이지 않게 즉 예상하지 않게 동작하기 때문에 var를 사용해서는 안된다. 개념적으로 자바스크립트에는 호이스팅이라는 개념이 있어서 저..
-
시니어 개발자가 말하는 좋은 프로그래머란?프로그래밍 2024. 1. 23. 21:08
프로그래밍은 프로그램 + ing으로 프로그램을 한다는 것을 의미한다. 프로그램이란 뭘까? 이 용어의 어원은 라틴어 "programma"에서 유래되었다. "programma"는 "공개 선언", "명령어"를 의미한다. 즉 명령어를 만드는 것을 프로그램이라고 쉽게 생각할 수 있다. 프로그램을 만드는 것 프로그램은 명령어들의 집합체 이러한 명령어를 실행하는 대상은 컴퓨터이다. 수많은 명령어를 잘 수행하여 원하는 결과를 도출해 낼 수 있도록 정리하는 것이 바로 프로그래밍이다. 가장 중요한 것은 수많은 명령어와 원하는 결과이다. 우리가 원하는 건 무엇인가? 즉 문제들을 해결하는 것들을 원한다. 우리가 세상에서 만나는 문제들을 컴퓨터에게 시키는 것으로도 볼 수 있다. 세상의 어떤 문제들을 해결하고 싶은지 문제의식과 ..
-
개발자가 어려운 문제를 맞딱드렸을 때개발일지 2024. 1. 18. 22:26
- 개발을 하다 보면 크고 작은 문제들을 만나게 된다. 이러한 문제들을 만났을 때 어떻게 대처하면 좋을까? - 문제가 발생하게 된 배경, 원인이 있다. 원인과 배경을 빠르게 발견할 수 있다면 우리는 어떤 문제든 해결할 수 있게 된다. - 어려운 문제들은 배경, 원인을 발견하기가 어렵기에 더욱이 해결책이 나오지 않는다. - 이번 포스팅에서는 어려운 문제의 배경, 원인을 발견하고 나아가 해결하는 방법을 경험해 본 내용을 토대로 적어보았다. 문제) 특정 상황에 콘솔 창에는 어떠한 에러도 없이 채팅이 멈추고 동작하지 않는 문제가 발생했다. - Error가 없이 원하는 동작을 하지 않을 때 이 문제가 보통이 아님을 감지한다. 어디서 멈췄는지 조차 알 수 없다. Q. 재현경로와 보면서 어떤 문제가 발생하는가? A...
-
개발자가 회의에서 살아남는 3가지 방법개발일지 2024. 1. 11. 21:32
개발자는 항상 컴퓨터만 보고 있다고 생각한다면. 그건 큰 오산이다. 하루에도 몇 시간씩 회의를 진행하곤 한다. 회의에서는 수많은 이야기가 오간다. "OO님 이건 어떻게 생각하세요?" "ㅇㅅㅇ" 속으로 '앗 난 별생각이 없다' 그래서 나는 "그냥 그렇게 진행해도 되겠는데요."라고 대답한다. 좋은 생각이 있더라도 어떻게 말해야 할지 모르겠기에 횡설수설하다가 끝나는 경우도 있다. 그리고 무엇보다 개발자, 기획자, 디자이너의 관점이 모두 다르다. 그렇기에 내 의견을 설득력 있게 말하기 위해서는 명확해야 한다. 설득력 있게 말하여 회의에서 살아남을 수 있는 방법 3가지를 정리해 보았다. 첫째 용어를 정리하라! 기획서를 받으면 먼저 해야 하는 건 기획서에서 처음 보는 용어들을 정리하는 것 이다. 종종 GNB, LN..
-
[BOJ] 2583 영역 구하기알고리즘/백준 알고리즘 2022. 9. 7. 22:58
알고리즘 직사각형를 좌표를 받아서 배열에 그려주기 dfs 탐색 할때마다 탐색 횟수를 저장 2.에서 저장된 탐색 횟수를 오름차순 후 출력 코드 #include using namespace std; int m, n, k, _x1, _y1, _x2, _y2, cnt; int a[101][101]; const int dx[] = {0, -1, 0, 1}; const int dy[] = {-1, 0, 1, 0}; bool visited[101][101]; vector ret; int dfs(int y, int x){ visited[y][x] = 1; int ret = 1; for(int i = 0 ; i < 4; i++){ int nx = x + dx[i]; int ny = y + dy[i]; if( nx < 0..
-
[BOJ] 9626 크로스워드 퍼즐알고리즘/백준 알고리즘 2022. 9. 7. 22:48
문제 이해하기 크로스워드 퍼즐을 출력 하자. 크로스워드 퍼즐은 #.#.이 반복되는 구조이다 알고리즘 홀수 번째 줄에 짝수번째는 '#', 홀수번째는 '.' 짝수 번째 줄에 짝수번째는 '.', 홀수번째는 '#' 크로스워드의 시작점은 왼쪽(L개) + 위(U)개에서부터, M번째까지 코드 #include using namespace std; int m, n, u,l,r,d; string s[11]; char a[100][100]; int main(){ cin >> m >> n >> u >> l >> r >> d; for(int i = 0 ; i > s[i]; } for(int i = 0 ; i < m + u + d ; i++){ for(int j = 0 ; j < n + l + r ;..
-
[BOJ] 1629 곱셈알고리즘/백준 알고리즘 2022. 8. 30. 22:54
문제 이해하기 A를 B번 곱한 수를 C로 나눈 나머지의 값을 어떻게 알 수 있을까? 이때 각 숫자의 크기는 2,147,483,674 라는 매우 큰수이다. 예제 입력으로 이해하기 A :10 B :11 C: 12 10^11 % 12 = 10^5 * 10^5 * 10 % 12 = (10^2 * 10^2 * 10 ) * (10^2 * 10^2 * 10 ) % 12 = ((10*10) * (10*10) * 10 ) * ((10*10) * (10*10) * 10 ) % 12 알고리즘 각 변수의 크기가 크기 때문에 long long 타입으로 선언하자 재귀 함수를 이용해서 문제를 쪼개서 풀수 있다. cal(10, 11) = cal(10, 5) * cal(10, 5) * 10 % 12 B가 홀수인 경우에는 cal(A, ..
-
[BOJ] 1213 팰린드롬 만들기알고리즘/백준 알고리즘 2022. 8. 30. 00:20
문제 이해하기 영어 문자열을 받아서 팰린드롬으로 바꿔야 한다 예제 입력으로 문제 이해하기 입력 : AABB 출력 : ABBA A : 2개 B : 2개 BB ABBA 입력 : AAABB 출력 : ABABA A : 3개 B : 2개 BB ABABA 알고리즘 알파벳의 개수를 찾는다 알파벳의 개수가 홀수인 알파벳이 2개 이상인 경우는 불가능 한 경우이다. 사전순으로 앞서는 것을 출력해야 하므로 Z > A 순으로 데이터를 앞뒤로 붙여준다. 알파벳의 개수가 홀수가 1개 있었던 경우 문자열의 중간에 넣어준다. 코드 #include using namespace std; string s, ret; char mid; int cnt[200], flag; int main(){ cin >> s; // step 1 : 알파벳의 ..